{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__title__       = ML in Action Code:Chapter 3\n",
    "__author__      = wgj(太阳老公)\n",
    "__createDate__  = 2018-10-9\n",
    "__description__ = Decision Tree 4 lenses\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import log\n",
    "import operator\n",
    "import treePlotter\n",
    "\n",
    "\"\"\" 计算香农熵 \"\"\"\n",
    "def calcShannonEnt(dataSet):  \n",
    "    numEntries = len(dataSet) # 样本数量\n",
    "    labelCounts = {}\n",
    "    for featVec in dataSet:   # 逐行读取样本\n",
    "        currentLabel = featVec[-1]  # 当前样本类别\n",
    "        if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0\n",
    "        labelCounts[currentLabel] += 1  # 统计每种类别出现的次数，保存为字典\n",
    "    shannonEnt = 0.0\n",
    "    for key in labelCounts:\n",
    "        prob = float(labelCounts[key])/numEntries  # 每种类别出现的频率\n",
    "        shannonEnt -= prob * log(prob,2)           # 按香农公式计算香农熵\n",
    "    return shannonEnt\n",
    "\n",
    "\"\"\" 分割数据集 \"\"\"\n",
    "def splitDataSet(dataSet, axis, value):\n",
    "    retDataSet = []                 # 初始化分割后的样本集为空\n",
    "    for featVec in dataSet:         # 逐行读取样本\n",
    "        if featVec[axis] == value:  # axis代表选取的特征列索引，value代表特征的某一取值\n",
    "            reducedFeatVec = featVec[:axis]     # 取出特征列左侧的数据\n",
    "            reducedFeatVec.extend(featVec[axis+1:])  # 合并特征列右侧的数据\n",
    "            retDataSet.append(reducedFeatVec)\n",
    "            \"\"\"\n",
    "            返回值为一样本子集，样本数量（行数）与axis指向特征取值为value的样本子集（记为C）相同\n",
    "            该样本子集是在上述样本子集C的基础上剔除掉axis指向特征取值为value的一列\n",
    "            （exg：贷款申请样本集中，axis指向年龄，value代表青年，返回值即为包含青年的样本子集中\n",
    "            剔除掉青年所在列后的样本集）\n",
    "            \"\"\" \n",
    "    return retDataSet\n",
    "\n",
    "\"\"\" 选择最佳分割特征 \"\"\"\n",
    "def chooseBestFeatureToSplit(dataSet):\n",
    "    numFeatures = len(dataSet[0]) - 1      # 特征数量\n",
    "    baseEntropy = calcShannonEnt(dataSet)  # 基础熵为样本集本身的香农熵\n",
    "    bestInfoGain = 0.0; bestFeature = -1   # 初始化最大信息增益为0；最佳特征索引为-1\n",
    "    for i in range(numFeatures):           # 遍历所有特征\n",
    "        featList = [example[i] for example in dataSet] # 取出第i个特征列数据\n",
    "        uniqueVals = set(featList)         # 第i个特征列的取值集合\n",
    "        newEntropy = 0.0                   # 初始化当前特征香农熵为0\n",
    "        for value in uniqueVals:\n",
    "            subDataSet = splitDataSet(dataSet, i, value) # 利用当前特征的每个取值分割样本集\n",
    "            prob = len(subDataSet)/float(len(dataSet))   # 当前样本子集在全体样本集中的占比\n",
    "            newEntropy += prob * calcShannonEnt(subDataSet) # 当前样本子集的香农熵\n",
    "        infoGain = baseEntropy - newEntropy # 计算信息增益\n",
    "        if (infoGain > bestInfoGain):       # 与历史最大信息增益比较\n",
    "            bestInfoGain = infoGain         # 更新最大信息增益\n",
    "            bestFeature = i                 # 更新最佳特征索引\n",
    "    return bestFeature                      # 返回最佳特征列索引\n",
    "\n",
    "\"\"\" 从类别列表中计算出现次数最多的类别 \"\"\"\n",
    "def majorityCnt(classList):\n",
    "    classCount={}\n",
    "    for vote in classList:\n",
    "        if vote not in classCount.keys(): classCount[vote] = 0\n",
    "        classCount[vote] += 1\n",
    "    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)\n",
    "    return sortedClassCount[0][0]\n",
    "\n",
    "\"\"\" 构建决策树 \"\"\"\n",
    "def createTree(dataSet,labels):\n",
    "    # labels为每个特征的名称/说明\n",
    "    classList = [example[-1] for example in dataSet]    # 取出类别列\n",
    "    if classList.count(classList[0]) == len(classList): # 只有1个类别时停止分割，返回当前类别\n",
    "        return classList[0]  \n",
    "    if len(dataSet[0]) == 1: # 当没有更多特征时停止分割，返回实例中数量最多的类\n",
    "        return majorityCnt(classList)\n",
    "    \n",
    "    bestFeat = chooseBestFeatureToSplit(dataSet)  # 最佳特征对应的列号\n",
    "    bestFeatLabel = labels[bestFeat]              # 最佳特征名称/说明\n",
    "    myTree = {bestFeatLabel:{}}  # 嵌套创建树\n",
    "    del(labels[bestFeat])        # 从特征名中删除掉已经选为最佳特征的\n",
    "    featValues = [example[bestFeat] for example in dataSet]   # 最佳特征数据列\n",
    "    uniqueVals = set(featValues) # 最佳特征列的取值集合\n",
    "    for value in uniqueVals:\n",
    "        subLabels = labels[:]    # 拷贝特征名，避免搞乱原有值\n",
    "        \"\"\"\n",
    "        以下在以当前最佳特征为节点的下方递归构建树\n",
    "        \"\"\"\n",
    "        myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet, bestFeat, value),subLabels)\n",
    "    return myTree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下代码处理隐形眼镜问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'tearRate': {'normal': {'astigmatic': {'yes': {'prescript': {'myope': 'hard',\n",
       "      'hyper': {'age': {'presbyopic': 'no lenses',\n",
       "        'young': 'hard',\n",
       "        'pre': 'no lenses'}}}},\n",
       "    'no': {'age': {'presbyopic': {'prescript': {'myope': 'no lenses',\n",
       "        'hyper': 'soft'}},\n",
       "      'young': 'soft',\n",
       "      'pre': 'soft'}}}},\n",
       "  'reduced': 'no lenses'}}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr = open('lenses.txt')\n",
    "lenses = [inst.strip().split('\\t') for inst in fr.readlines()]\n",
    "lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate']\n",
    "lensesTree = createTree(lenses,lensesLabels)\n",
    "lensesTree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWUAAADxCAYAAAATBaZaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XdYFFf78PEvIh0pUhRRsSD2BkSxxhYTsUVNFBVQY41djI/YCLGbR40tKioWQMEWTKLGKCRBERQhKhIbFhRRUAQjfdnd8/7B6/5iNOVJwAU9n+vikp2dPXPPhNx75swpOkIIgSRJklQuVNJ2AJIkSdL/kUlZkiSpHJFJWSpzWVlZtGrVijZt2nDv3j06depE48aNuXPnDn369KFWrVokJyfj5eWFjY0NiYmJzJgxgypVqnD69GmWLl2KoaEhR48eJSAgAD09PUJCQti/fz/6+vqsW7eOiIgIjI2NmT9/PnFxcVhYWDBhwgQuX76MnZ0dgwcP5tatW9SrV4933nmHu3fv0qJFC9q0aUNqaiodO3b8w5iqVavG5cuXtX0ZpTeETMpSmevXrx9NmzbF0dGR+vXrU61aNbp06YKTkxMKhQIPDw+aN29OcnIykyZNws3NjcjISObOnYu7uzuBgYEsXrwYLy8vFi5cyIoVK/jkk0+YOHEiy5YtY+XKlXz44Yf4+/uzf/9+unfvzqxZszh79iyurq6MHj2aBw8e0LhxY/r164eenh6Ojo64urpqYqpevfpLY7px4wZjxoyhS5cu5ObmavtSSm8AHfmgTyprY8eO5ZdffmHVqlXcvHmTRo0aoaOjw9WrV3F0dKRy5crcuHGDWrVqYWBgQEpKCjY2NpiYmHDv3j2qVKmCubk56enp6OvrU7VqVTIzM1Gr1dja2pKdnU1BQQE1atQgJyeHJ0+eUKtWLQoKCkhPT6du3booFAru3LlDgwYNUKlUJCcn06hRI4QQXL169U9j2rRpE8nJyZw8eRJ9fX1tX07pNSeTslTmCgsLqV27NrNmzaJbt27aDud/kp6eTt++fbl69SpOTk7aDkd6A8jmC6nMjR8/nsaNG9O5c2cAcnJy2L9/f6mVP27cOAYOHMjQoUPx9vbm2rVrf/mZPXv2UFhY+Jf7Va9enVGjRuHh4UFRUVFphCtJf0omZanM3bx5k3r16lG5cmWgdJOySqUCYPHixYSGhvLBBx+wdu3av/xcaGjo30rKAE5OTqSlpVFcXPyvYpWkv6OytgOQXn/h4eE0bdoUV1dX3NzcWL9+PWlpaQwbNoy2bdtiaWlJREQECoWCrl27Mn78eABmzpxJRkaG5sHbwIEDAejUqRPDhw8nNjaWGTNmPHesFi1aEBwcrHm9bNkyLl++TFFREd27d2f8+PGEhYXx6NEjxo8fj4WFBQEBAZw5c4aAgAAUCgU1a9bk008/xdjYmMzMTPz9/YmOjsbU1PTVXTTpjSWTslTm9u3bh5GREQ0aNABgypQp3Lx5kz179nDmzBkiIyPZtWsXQgh8fHz4+eefcXZ2xs/PD3NzcwoLC/H29qZbt25YWFhQUFBA/fr1mTBhwgvHiomJoUuXLprXEydOxNzcHJVKxccff0xycjIeHh7s3r2bgIAALCwsePLkCYGBgWzcuBEjIyN27tzJ7t27GTt2LObm5rRu3ZoNGzawfft2dHR0XtVlk95QMilLZe6LL75g2LBhWFlZvfDemTNnOHPmDMOHDwcgPz+fu3fv4uzsTFhYGD/99BMAGRkZpKamYmFhga6u7gsPDOfPn09ubi7FxcWEhoZqtp84cYLw8HBUKhWZmZncunVL8+XwzKVLl7h16xajR48GoLi4mObNmwOgp6fH+PHjGTNmDKtWraJq1aqldl0k6WVkUpbKXGhoKL169aJ58+Y0bNjwufeEEIwcOZJBgwY9tz0+Pp64uDh27NiBoaEh48aN0zxo09fXR1dXV7OvQqFg8eLFKJVKZs+ezYABAxg0aBCurq4EBwcTHByMmZkZ/v7+KBSKF+ITQtC2bVuWLl36wns5OTn4+voSGBgoE7L0SsgHfVKZKy4uRgihSaTGxsbk5+cD0K5dO7755hvN64cPH5KVlUVubi5mZmYYGhqSkpJCUlLSS8u+desWycnJQEl7cnh4OKampqhUKj7//HMePXrEgQMHuHLlCjExMZrPGRsbk5eXB0Dz5s25ePEiqampQEkXvjt37gCgo6ND5cqVX5rMJaksyKQslTlPT08mTJiAo6MjABYWFrRs2ZLBgwdz9uxZ3nvvPUaNGsWQIUOYPXs2+fn5tG/fHpVKhYeHB5s2baJZs2YvLfvEiROYm5trXhsaGjJixAiKioo4cuQIrq6uBAUFMWrUKNRqNRcuXCAvL48BAwYwdepUxo8fj6WlJf7+/sybNw8PDw9GjhxJSkoKAKampixdupTx48fz+PHjMr9WkiQHj0hlbtu2bfj7+7Nt2zZsbGxKrVwhBIMGDWLhwoV/mLSfKSoqIjo6miNHjvDzzz/TsWNHevfuzVtvvaXpqvcyCoWCadOm4ezszKZNm+SDPqnMyZqyVOb69OmDQqHg9u3bpVru9evXUalUNG3a9C/3NTAwoHv37qxevZrw8HCaN2/O5s2b6dOnD2vWrOH69esv/dzTp09JSkpi1KhRMiFLr4RMylKZGzhwIP369aNx48Zs376dX3/9lcLCQnbu3MnDhw9RKpWEhIRw9+5d1Go1+/fv59q1awgh+Pbbb7lw4QJQ0lRx5swZAE6dOsW2bdvo2bMnCQkJfPfddwAkJSURHh6OEIIbN24QFhaGSqUiLS2N4OBgiouLUavV5Ofns3nzZlatWsWVK1eYPn06Q4YMYerUqVy5ckUTU35+PosWLcLd3Z2cnBytXUPpzSGbL6QyN2nSJGJiYlAqlejp6VFQUIC5uTlFRUVkZWVRt25dnjx5QkZGBq1ateLu3bs8fPiQdu3aceXKFbKysujatSvnzp0jPz+fLl26cOrUKTIzM+natSvnz5+nSpUqtG7dmqioKGxsbHB0dOTs2bNUr16d6tWr88svv1CtWjVMTU1JS0vDwsICHR0dFAoFenp65OfnU6lSJTIyMsjOzsbCwoIqVapQWFhIy5YtKSgoIDIyUk5IJJU5WVOWytz69et59913GThwIAkJCQwfPpx27doRHx/PrFmzaNCgAWfPnuW///0vVatW5ezZs+zYsQN9fX1iY2M5dOgQCoWC6OhoIiIiyM/PZ926ddSpUwd9fX2OHTtGTEwMarWaffv2ERsbi7GxMZs3b+bs2bPY29uzePFi4uLiaN68OZMnTyY+Pp4ePXpoYvL09OTdd9/l4cOHrFy5klatWtG4cWNyc3O5efMmvr6+f9r2LEmlRdaUpQppxowZmJub4+/vX6bHSU9PJzQ0lODgYB49esTw4cPx9vamSZMmZXpc6c0lk7JU4ajVamrVqkVERASNGzd+ZcdNSkoiODiYkJAQ7Ozs8PLyYujQodja2r6yGKTXn2y+kCqc6OhobGxsXmlCBmjWrBkrVqzg7t27LF++nISEBJycnOjTpw/79u2joKDglcYjvZ5kTVmqcCZOnEitWrWYM2eOtkMhNzeX8PBwgoODiY+PZ9CgQXh5edGxY0cqVZJ1Hul/J5OyVKEolUrs7e2JjY2lXr162g7nOWlpaezZs4egoCByc3Px9PTEy8tLrlgi/U/kV7lUofz44484ODiUu4QMYG9vz6xZs0hMTCQ8PJy8vDw6d+6Mm5sbGzdurNDDtO/fv6/tEN4YMilLFUpYWBgeHh7aDuNP6ejo0KpVK1avXs29e/f49NNPOXXqFPXr12fAgAGEh4dXqKWldu3aRc+ePbUdxhtDNl9IFYZCocDOzo6LFy9Ss2bNF95XqVTcv3+fWrVqaSG6v/b06VMOHDhAcHAwly5dYvDgwXh5eeHm5lYuh3ArlUpN3+w2bdowY8YMhg4dihCiXMb7upA1ZanCOH78OE2aNHlpQgZYsWIFvr6+PHny5BVH9veYmZnx0Ucf8eOPP5KQkEDNmjUZNWoUTk5OLFy4kFu3bmk7xOdUrlyZgoICAgMDsbW1ZcGCBeTk5MiEXMZkUpYqjL17977QdCGEQK1WA/Dxxx+TmZnJyZMnKe83gA4ODsydO5crV66wZ88eHj16hJubG506dWLr1q1a+WJ5dh2fKSwsZNCgQcTHx/PZZ5+hr6+Pn58fQLm/vhWakKQKID8/X5ibm4v09HTNNqVS+cLvmzdvFh988IFIS0t75TH+W0VFReLrr78WH3zwgTAzMxMffvih+Oabb4RCoSjzY6tUKs3vz46Xk5MjPD09xd27d4UQQqSmpgpbW1tx9erVMo/nTSZrylKFcPToUVxdXalWrZpm27OVTNavX09ISAhqtZrx48ejUqn4+uuvUSqV2gr3H9HX16dfv37s37+flJQUevTowYoVK7C3t2fq1KnEx8eXWQ21UqVKPHjwgCFDhvDJJ5+wfv16DAwMuHXrFoWFhSiVSmrWrImrqyvTpk0rkxikEjIpSxXC3r17GTx4MPB/t84nTpygffv23L17l59++gkfHx8UCgUzZszgq6++4saNG9oM+V+xtLRk3LhxREdHExsbi5WVFR4eHjRp0oRly5Zx9+7df1W+SqV67nVKSgrDhw/H3d2dOXPmMG3aNK5cuUL79u1Zvnw5Dx8+BKBVq1b88ssvmuWypNIne19I5V5ubi729vbcvn37ucVL9+7di5OTEw0aNGDAgAGkp6czffp0Ro8ezbRp09DT0+Ozzz7DxMREi9GXHiEEsbGxBAcHs2/fPlq2bImXlxeDBg3CzMzsfyrn2cO62NhYzYx9SUlJ1KhRg1WrVmFpaUlwcDBKpRIfHx+ys7NJTExk5MiRjB07FktLy7I6TUmbbSeS9FeUSqXYvXu36NWrl3j8+LGYN2+eCAgI0Lx/6dIl0bZtW7Fnzx6xZcsW0bNnT5GSkiJu3bol+vbt+1wb9OuksLBQHDhwQPTv31+Ym5uLoUOHiu+++04UFxf/rc9fuHBB9OzZU/Tv319kZ2eLo0ePiqpVq4qBAweKH3/8UQhR0s58//59IUTJdY6Pjy+r05F+QyZlqVxSq9Wa3/v16yc2bdok3n//fTFjxgzRrl07sXHjRlFYWCjCwsLEwIEDhRBCXLt2TdjZ2YnPP//8hTJeZ48ePRIbNmwQbdq0EdWrVxc+Pj7iwoULf7h/Xl6eGDVqlNi+fftz29u0aSPWrl0rhCh52Ddy5Ejh6+v73ENAqezJ5gupXNu/fz8eHh5MnjwZKysr/Pz8OH78OGFhYYwYMULT1jps2DBiYmJo06YNU6ZMeWNvr69du6aZXrRKlSp4e3szdOhQatasyYEDB+jfvz+5ubl07NiRo0eP4uDgQF5eHiYmJpw7d44lS5agr69PcnIy3bt3Z/ny5XJy/1dMJmWp3BC/aetMT0/n0KFD7Nq1C4C3336bgwcPkpycDICvry+mpqZ4eXlx48YNQkJCGDJkCO+9957W4i8vHj16hJWVFadOnSI4OJivvvoKV1dXLl++zMyZMxk3bhwLFiygQ4cODBo0CCjpo6xSqdDT0+PcuXPY2dn94SAdqWzp+pf10g2S9Dfp6OhQVFTExo0biYuL4/Dhw6SkpODn58fEiROJiIjQrN1na2vLzp07qVmzJr169eL999/H0dFR26egVWq1miNHjjB37lw8PT2xtbUlKyuLadOm4ejoSFJSEkFBQVy7dg1jY2MuXbqEoaEh+vr6jB8/nvT0dNzc3LC3t/+fHhxKpUvel0hao1arqVSpkubfb775hvPnz1NcXMzixYtRKpVER0fTtGlT9PX1mTFjBrNmzWLEiBG0aNGCmTNn0rFjR22fRrmgUqnQ1dXFxcWFatWqsXv3bt59913OnDlDcXEx48aNY8iQIfTv35+nT59y48YNUlJSiI2NRUdHh0mTJjFlyhRtn4aE7KcsacmzRAxo/t2zZw/ffvutpj9ypUqVsLOz49KlSxQVFdGjRw8aNGjA7t27AejWrZtcXfr/ezaQJioqCgsLC0JDQzExMaFfv35cvXqV6OhoAObPn09UVBRbtmwhOjoad3d3cnJy2LlzJ2vWrCEjI0ObpyEhk7KkJZUqVeL27dtMmTKFdevWcfPmTdasWYORkRH5+fkolUoiIiLo06cPP/zwA4mJiQDs2LFD1uh4ce6JwsJC+vTpw4EDBzTNFhs2bKBPnz6YmZkRERGBUqmkUqVKODg4cObMGZo2bcoXX3zB3bt3WbFiBefPn6dhw4b07t2bvXv3yuWttEQmZemV+P0Isri4OHr16kX16tXJyspi9OjRFBUVMWDAAHbu3ElycjIXLlxg4cKF6OrqamqCr8tAkH9DpVJpHog+S853796luLiYAwcOMHfuXJYtW0ZUVBS3b99m+PDhPHnyhNatWzN37lyCg4Of+2LT1dWlR48e7Nq1i7S0NIYOHUpgYCD29vaMGTOGqKioFyYrksqO7H0hlalnf17PksjZs2dp27YtW7duJScnBx8fH4QQbNiwgZiYGIKCgnB3d6dWrVoUFxdrRpXJbln/124MJXMdL126FJVKxcCBA3FycsLZ2Zndu3fj7OxMWloaU6dOxcHBgdWrVwMlU5/+L5PV/3Z5q5ycHM3yVg0bNiyT85NKyJqyVKZ0dHTQ0dHh+vXr9OvXj+HDh7Ns2TKio6P5/vvvgZIE06tXL/Ly8lAqlfTp04cTJ05o2pbf9IT87IvtWUJOSUmhU6dOANSpU4eZM2cSGRnJhAkTWL9+PYCmB8W5c+dISEgA+J9XD/nt8laHDh2ioKCALl260LZtW7788ksyMzNL6xSl35BJWSpzwcHBDBo0iClTpnD+/HlycnJwcnLi8uXLhIeHo6enx/379zEzM8PIyIgBAwZQUFDAu+++q+3Qy4Vndxk3btzA3d2djRs3Mnz4cGbPns3+/fuxsLCgVatWDBs2jMTERCZMmECnTp2wtbVl7969uLi4/Ovjt2rVilWrVpGamspnn33G6dOncXR05P333+fgwYMVanmr8k42X0hlLiEhgfbt23Py5Enatm1LZGQkp0+fJikpidTUVFq0aMHp06eZMGECkydP5r///S/Jycls2bJF26GXG0FBQaxevZrFixdTq1YtunXrRt26dZkxYwbDhw8HSiZuKiwsJCEhgezs7DJfy/Dp06ccPHiQoKAgEhMT+fDDD/H29qZdu3ZydZJ/QSZl6ZWYNWsW9+7dIzQ0FKVSSUBAAPfu3aNTp07o6OjQrFkzzdp6rq6urFixgu7du2s56vIjISEBNzc3Tp48ScOGDZk4cSKdO3dm4sSJQElXNycnJ4YNG6aV5p47d+6we/dugoODKS4uxsvLC09PT+rXr//KY6nwXv10G9KbKD09XbRt21YcO3ZMCCFEXFycWLNmjWYWsmeSk5NFtWrVnltVRCoxY8YM4enpKYQQIiIiQjg4OIjZs2cLFxcXMWTIEPHw4UMtR1gyCVRcXJyYMmWKsLGxER06dBCbN28WWVlZ2g6twpA1ZemVCQgIYO3atVy+fPmF93bt2oWrqyuHDh3iwYMHbNiwQQsRlm8PHz6kb9++LF68mHfeeYdLly5x584dzMzM6Ny5s7bDe0FxcTHHjh0jKChI0/PDy8uL9957Tw76+RMyKUuvTFFREUFBQYwePVrTK+OZyZMn4+joSGBgIBs3bqSoqIiuXbtqehxIJf7si608y87OZv/+/QQHB3Pt2jWGDBmCt7c3rq6usv35d2RSlsqFL774gvj4eKKiohg5ciSHDh3i/Pnz6OnpaTu0cuXPvtgqilu3bhESEkJQUBCVK1fG29ub4cOH4+DgoO3QygWZlKVy4euvv+aTTz7B0tKSwsJCIiMjsbGx0XZYUhkSQnDmzBmCgoLYv38/zZs3x8vLiw8++OCNnqVOJmWpXLh06RItWrTAycmJ06dPY21tre2QpFeoqKiII0eOEBQUxI8//oi7uzve3t688847mt4kkZGR3Lp1i7Fjx2o52rIlk7JULhQUFNCuXTsiIyOxsrLSdjiSFmVmZrJ3716Cg4NJSUlh2LBheHl5YW1tTadOnZg3b95rnZhlUpYkqdy6du0aISEhBAcHU6VKFXr16kVQUBBr1qwp88Ex2iKTsiRJ5Z5KpeLIkSNs376d77//nqKiIjZs2KAZPPM6ebNnepE0CgsLmT17Nr1796Zbt27Mnz8fFxcXBg0axOLFi6lZsyajRo1i7dq16OjoMG3aNLZv3869e/dYsGABBw4cICEhgcWLF/PDDz9w5MgRVqxYwYULF9ixYweff/45qamprF69muXLl5Ofn4+/vz/+/v4YGRkxZ84cfHx8qFWrFv/5z38YNWoULVu2ZPbs2fTp06dUYzI0NNT25Zb+R4MGDeLkyZPUqlWLrl27olQqMTY2fm4ftVpNQUHBS38KCwuf+720piLV1dXF0NAQIyOjP/0xNDT82z1lZE1ZQqFQ0K9fP54+fcr169dp2rQphYWFpKSk0KxZMzIzM8nKyqJx48akpKQAJbOTXblyBUtLS2xsbEhKSsLBwQEjIyN++eUXGjduTHFxMTdu3KB58+ZkZ2fz4MEDWrRowd27d8nPz6dx48ZcuXIFY2NjateuTWJiInZ2dlhaWnLp0iUcHR3R09PjypUr/zimOnXqYGhoyC+//IKTkxNmZmZ88803cvBCBSN+s6ju6dOnCQ0NJS0tjQcPHpCenk5GRgaFhYUYGBhgaGio+TEwMND8PHutr6+vWe3m31KpVBQVFT33U1hYiEKhoLCwkMLCQoqKilAoFJiYmFCtWjXs7Oyws7Ojbt26jBkzhgYNGjxXpkzKEo8fP6Z27dp88cUXGBoacvLkSUaPHk1aWhrffPMNY8aMIScnh9DQUEaNGoUQgp07dzJ06FCqVKnCtm3b6N+/PzVq1CAwMJDOnTvTqFEjdu3aRYsWLXBxcSE0NJSaNWvSuXNnwsPDMTIy4r333uPYsWMUFBQwYMAAoqKiNJOsJyQkkJiYyIgRI7h69WqpxFRYWMiMGTNITU2latWq2r7s0j9w48YN2rRpg6enJzVq1MDa2hpra2usrKwwMjIqt/221Wo1eXl5ZGZman6Sk5P56aefuHr1KkZGRpp9ZVKWAPj+++8ZMmQI4eHhr2Uf0adPnzJgwAD27t0rpwStwFatWkVcXBz/+c9/tB1Kqfjoo49Yt24db7/9tmabnE9ZAiAiIgIHBwcMDAy0HUqZMDAwwMHBgYiICG2HIv0Lv/zyC/Xq1dN2GKWmXr16XLly5bltMilLPHjwgJUrVzJv3rx/lJS//fZbHj16pHm9aNEibt26VZohvmDPnj0UFhZqXk+dOpWcnJw/3N/AwIB58+axcuVK0tPTyzQ2qexcvnyZunXrlkpZAQEBBAcHl0pZ/5SDg8ML85jIpCxhZ2fHokWL8PPzey7R/V2/T8oLFiwo89pMaGjoc7GuW7eOKlWq/OH+hYWFLFiwgEWLFlG9evUyjU0qOzdv3qR27draDqPU1K5dm+vXrz+3TXaJkwBo3Lgxjx8/RqlUarbNnDmTjIwMFAoFHh4e9O/fn0WLFnH58mV0dHTo168f1apV48qVK8yfPx9DQ0O2b9/O1KlTmT59Ok2aNOHQoUMEBQVhbW1N7dq10dPTY/bs2fj7+2NgYEBKSgrp6en4+flx+PBhLl26RLNmzfD39wdg2bJlXL58maKiIrp378748eMJCwvj0aNHjB8/HgsLCwICAujbty/BwcFYWFhw+PBhQkJC0NHRwdHRkUWLFqFUKjW9NaSKS6lUanrO3L9/n6lTp9KqVSsSExOxsbFh1apVGBoacu3aNZYtW0ZhYSE1a9bEz8/vT5+V3Lt3jxUrVpCdnY2hoSHz58+nTp06+Pv7Y2JiwpUrV3j8+DFTpkyhR48eZGZmMmfOHM26knPmzKF169acOXOGgIAAFAoFNWvW5NNPP8XY2Jj169dz8uRJdHV1cXNzY/r06UDJHVxxcfFzscikLPHo0SOGDx9OQEAApqammu1+fn6Ym5tTWFiIt7c3jRs35uHDh+zbtw+AnJwcqlSpwr59+zRJ+PflBgYGEhISgomJCRMmTHiu+8/Tp0/ZvHkzUVFR+Pj4EBgYSL169fD29ubatWuaFTbMzc1RqVR8/PHHJCcn4+Hhwe7duwkICMDCwuK5Y968eZPt27ezfft2LCws+PXXXwEwNTVl5cqVeHp60rlzZznZ0WsiNTWVJUuWMH/+fHx9ffnhhx9wd3fn008/ZdasWbi4uLB582a2bt3KzJkz/7CcJUuWMGfOHGrXrk1SUhLLly9n8+bNQMmw723btpGSkoKPjw89evTg2LFjuLm5MXr0aFQqFYWFhTx58kQz9ayRkRE7d+5k9+7dDB48mB9//JGDBw+io6Pzp81sIJOyBFhaWtKjRw/27dtHkyZNNH04w8LC+OmnnwDIyMiguLiYtLQ0Pv/8czp27Iibm9uflvvLL7/g7OyMubk5AD169CAlJYVDhw6Rm5tL9+7duXv3Lrdv38bS0hJHR0eg5OHHgwcPaNiwISdOnCA8PByVSkVmZia3bt16oV/nb507d47u3btrkvWzY6vVavbt20f37t2xtLT8V9dLKj9q1KhBw4YNAWjUqBH3798nNzeXnJwczYKxffr0Yfbs2X9YRn5+PomJifj6+mq2KRQKze9dunShUqVK1KtXj6ysLACaNGnCwoULUSqVdOnShYYNG3Lq1Clu3brF6NGjgZJJ/ps3b46JiQkGBgYsWrSIjh07alYi/yMyKUtUrlyZRYsW0aZNG6ZNm4aVlRXx8fHExcWxY8cODA0NGTduHAqFgtDQUGJjY9m/fz8nTpzg008//cNyf9/bMj8/n+joaK5evYqdnR16enpUqVKFEydO8PjxY7Kzs7G0tKRSpUoolUrS0tI08+6amZnh7+//3P8sf+RlfVWzs7M5fvw4586d08oadlLp+e3f1W/n29bV1f1Hq2qr1WpMTU3Zs2fPS9//7TGeHdvZ2ZmtW7cSHR2Nn58fXl5emJmZ0bZtW5YuXfpCGbt27SIuLo7jx4+zb98+TS2P4dPfAAAgAElEQVT8ZT2S5YM+iZycHPr168f8+fM1M7Tl5uZiZmaGoaEhKSkpJCUl8eTJE9RqNd27d2fChAlcu3YNABMTE/Lz818ot2nTpvz88888ffqUM2fOsHXrVszNzdm2bZuml0fVqlVZvnw5+vr6DB8+nPj4eM3n8/LyMDIywtTUlMePHxMTE6N5z9jYmLy8vBeO+dZbbxEREcGTJ08ANM0XVlZWzJ8/n759+/7l7aNUftnY2JCZmfmn+5iammJmZsb58+cBOHLkCM7Ozn+6v729vaa7pBDihYdvv/fgwQMsLS0ZMGAA/fv359q1azRv3pyLFy+SmpoKlDxcvnPnDvn5+eTm5tKxY0dmzpz5XNkPHz6kWrVqz5UtqwwSOjo66OvrP5dY27dvz1dffYWHhwcODg40a9ZM83Dt2bf7pEmTgJLbw6VLl2oe9D1ja2uLt7c377//PgUFBbRt25YGDRq8UFOtXLkyVlZW+Pj4sGDBAszNzWnXrh1OTk40bNiQwYMHY29vT8uWLTWfGTBgAFOnTsXa2pqAgADN9vr16/PRRx8xbtw4dHV1adiwoeahYX5+PgYGBuV21Jf01xo3bszt27c1TV1/xN/fX/Ogz97e/k/v6KCkG+fy5csJDAxEqVTSs2dPnJyc/nD/hIQEzcopxsbGfPbZZ1haWuLv78+8efM0d3Qff/wxJiYm+Pj4oFAoEELg4+OjKSclJYWmTZs+V7Yc0ScBJZPMt2rViqNHj5baBPP3799nzpw5mJmZMX/+fJYvX06/fv3o2rXrH37m8ePH+Pv7k5eXx5IlS7CzsyuVWDIzM3F3d+fChQs0b968VMqUXr25c+eSmZnJ+PHjtR1KqZg5cybTpk1jwIABmm2y+UJCoVAwdepUBgwYgIWFheb2UK1Wk5GRAZTc0v120EV6erqmxpyRkaGZdSszMxOlUklERAReXl7o6emRmZnJhAkTsLW1pUuXLjx9+pTc3FygpJnk6dOnQMlE97q6uqxdu5ZOnTrh5eVFZGQkSqXyX8dkYWGhqV3/nXZpqXxq06YNMTEx/6g/fXnz8OFDLl26ROvWrZ/bLmvKEllZWTg4OODv78/hw4eJiYlh4cKFxMTEcOTIEebMmcOdO3cICQlh8uTJAGzYsAFPT08cHBxYunQpffr0oX379ixYsAAbGxsUCgW5ubk0a9aMMWPG4Ovri52dHTNnztT0afbz82PhwoUUFhayePFiVq1aRXp6OsuWLWPbtm0kJSVhamqqSeyLFi36RzH5+fnRoUMHevfujb+/P3fu3JETElVQarUaLy8vDhw4gIWFBTY2NlhbW1O1alWMjY3R09N7bma4388O9+x1ac0Sp1QqX5gl7rezxT2bIU6hUJCXl8fjx4/JzMzk0aNHFBQUMH/+fObOnftcmTIpSwBER0fz3nvv0bNnT3x9fenVqxctWrRgzZo1uLu7U716dXbt2sXAgQPR0dHh4MGDjBgxgvT0dI4ePcr06dP5+eefsba2RqFQkJWVpRnEERISwv79+zl9+jQrV64kMDCQzMxMZs2axcqVK7GysmL06NF88skntG/fnsGDB+Pp6Ymnpye9e/fGysoKfX19MjMzcXZ2/p9iSkxM5LvvvmPZsmWcOHGCY8eO0bFjR21fbulfKi4uJiMjgwcPHmim78zLy6OgoID8/Hzy8/M18yfn5+c/N59yQUFBqc6n/Pu5k42NjV/6b5UqVTTTdtrZ2WFtbY2uru6LhQpJ+v+ePn0qlEqlEEKInJwcoVAohBBC5OXlicLCQiGEEAUFBaKgoEAIIURhYaHIy8sTarVabNiwQVhZWYkdO3aI4uJi8fTpUyGEECqVSjx58kQIIYRarRbZ2dma4/3+d7VaLYQQ4smTJ0KlUmliKi4uFjt27BBWVlbiyy+/FGq1+i9jEkIIhUIhcnJyhBBCKJVKTUySVJ7JmrL0r2RnZzN27Fhu3rxJWFiYpiN/Wbh27RoeHh7Ur1+frVu3ykEg0mtJPuiT/rHTp0/TunVr7O3tiY2NLdOEDNCwYUNiY2Oxt7endevWz/VblqTXhawpS/8zlUrFsmXL2LBhA1u3bqVv376vPIZvv/2WsWPHMmXKFHx9fV/eNidJFZBMytL/5P79+3h6eqJWq9m9ezf29vZaiyUtLY3hw4dTqVIlQkJCqFGjhtZikaTSIpsvpL/t8OHDODs707VrVyIjI7WakAHs7e2JjIyka9euuLi4cOTIEa3GI0mlQdaUpb9UVFTE7NmzCQ8PZ/fu3eWyS1l0dDTDhw9n0KBBLFu27LVd1kp6/cmasvSnrl+/Trt27bh79y7nz58vlwkZoGPHjpw/f57bt2/Tvn17kpOTtR2SJP0jMilLfygoKIgOHTowduxYDh48WO5HwVWtWpWvvvqK0aNH0759e62vvyZJ/4RsvpBekJOTw8SJE0lISGDv3r0VcgKfxMREPDw8cHV15csvv/zT9fskqTyRNWXpOQkJCTg7O2NkZER8fHyFTMgALVq04Ny5cxgYGODi4kJCQoK2Q5Kkv0UmZQkomehl9erV9OrViyVLlrBlyxaMjY21Hda/YmJiwtatW1m0aBG9evXiiy++eOlKD5JUnsjmC4mHDx8ycuRIsrOzCQ0NpU6dOtoOqdTdvn2boUOHYmVlxc6dO+XCqVK5JWvKb6iEhARSU1OJjIzE2dmZVq1acfLkydcyIQPUrVuXU6dO0aJFC1q3bs0PP/yg7ZAk6aVkTfkNk5yczPTp0ykqKqJu3bocPXqUoKAgunfvru3QXpkTJ04wcuRIRo4cib+//3MLY0qStsmk/Ibx8PDAycmJEydOYGFhwa5du7C1tdV2WK/cw4cPGTFiBL/++it79ux57g7h9u3brF69msaNG/PWW2/x1ltvIYSQa/tJr4RsvngD/PTTT6SkpKBUKtHR0eHzzz/H1taWJk2asHr1ai5fvgy8fLnz15WtrS1Hjhxh0KBBtGnThgMHDgAQFxdHr169qFatGg8fPsTX15f4+Hh0dHRKbWJ0Sfozsqb8Gjt//jyjR4+mUaNGCCF4/Pgx165do3379vTu3Ztff/2VGzduYG1tzbx587QdrtbEx8czYMAA3N3dad68OQqFAh8fH4QQbNq0ie+++45vv/1W22FKb4jKf72LVNE8ffqU06dPc/bsWTZs2ICZmRkuLi7UrVuXs2fPUr16dQAePHjAxIkT36j25N+7fv06CxcuRE9Pj7Nnz7Jv3z4aN26Mj4+PZqn5EydOcPv2berWravtcKU3gGy+eA1t3ryZqKgodHV1GT9+PK1bt6ZPnz5cuXKF6tWrc//+fVatWsXbb79N27Zt6dOnj7ZD1org4GAGDRrElClTuHjxIr169aJbt26cPXuWCRMmULlyZe7fv0+VKlVkQpZeGVlTfk0kJSVhZGRE/fr1adKkCb6+viiVStLT0zl27JimNrxv3z66du2Km5sbI0eOxMrKCuCNfJDVpEkTrl+/jpmZGVWqVKFHjx4YGRmRn59PcHAwx48fx8DAgEmTJgFv5jWSXj1ZU34N5ObmEhgYyKRJk8jJyUGpVJKamoqVlRXDhw8nIiKCmJgYevToQUhICPr6+nTo0AErKytUKtUbm2xcXFyYOnUqa9asAeDtt9/GysqKVq1asWfPHpo3b05ubi6tW7cGeCOvkfTqyQd9r5EpU6Zw/vx5EhMTadu2Lfv37yctLY2dO3dy69Yt+vfvj7e3t7bDLFcyMjLo378/n332Ge+++y7nzp0jJiaGwYMHY2dnJ5edkl45mZRfE2lpaQwbNozHjx9Tt25djhw5wqFDh+jXrx9qtZpKlf7vpkilUsnk8hsBAQGsXbtW0zXw9+SyU9KrJJsvXgOHDx/GxcWFd955h4sXL+Ln58eAAQPIz88H/u+2+1k/W5mQnzdy5EhmzJiBWq1+aV/t3y475ezsLJedksqUrClXYL9dpmnPnj106NBB856Pjw/VqlVj9uzZb2ybcVl4tuzUwIEDWb58uVx2Sip1sqZcQT1bpik1NZULFy5oEvKz79jk5GRNIpYJufQ8W3bqzp07tGvXjuvXr2s7JOk1I5NyBSOEYNeuXXTo0IFx48Zx4MABLC0tNe/r6Ojw5MkTOnbsyPTp07UY6euratWqHDx4kLFjx9KhQweCgoK0HZL0GpHNFxVITk4OH3/8MefPnycsLKzCrgryOnm27JSLiwsbN26Uy05J/5qsKVcQ8fHxODs7Y2Jiwrlz52RCLieeLTtlZGSEs7OzXHZK+tdkUi7n1Go1q1atwt3dnaVLlxIQEFDhl2l63ZiYmLBlyxaWLFlCr169WL16tZxRTvrHZPNFOfZszt8nT568tss0vW6eLTtVtWpVdu7cia2tLSkpKWRnZ2tGBkrSn5E15XJkx44dpKSkABAREUHr1q1p3br1a71M0+vm2bJTLVu2pHXr1kRGRpKSkoKHhwdKpVLb4UkVgKwplxOpqam0bNmSxMREvvzyS4KCgt64ZZpeN8+WnfL29iYmJoZRo0YxcuRIbYcllXMyKZcT48ePR0dHh4sXL2Jpaam59ZUqrjt37pCZmcm8efNITU3l6dOn3Lx5E319fW2HJpVjsvmiHLh58yahoaEcOHCALl26MHr0aFJTU7UdlvQvbd26lb59+xITE0Nubi737t1jzpw52g5LKudkTbkccHNzIy4uDn19fWrUqEHTpk0ZM2YM/fv313ZoUinIysri8uXLfPfddzRo0EA2YUh/6o2rKSsUCqKiohBCUFBQQHR0NAB5eXnExsYCJcspnT17FoDs7Gzi4+MBePz4MefPnwdKekYkJiYCJcsqJSUlASUzil25cgWAu3fvaobh3r59mxs3bgBw48YNbt++DZQMl548eTI//PAD0dHRnDx5km+//Zb69evz4MEDoGSAwsOHD4GSdfcyMzPL8ApJpa1q1ap07NiRJUuWaBJyamqqZla6jIwMLly4AJT8vcXFxQGQn5/PqVOnACguLubHH39ECIFarebHH39EqVQihODkyZMUFBQAcObMGX799ddXfIZSqRJvkKKiItG7d29hZGQkfHx8RM+ePYWhoaGYN2+e6Ny5szAyMhILFy4Ubdu2FUZGRmL58uWidevWwtjYWKxatUo0adJEmJqairVr14oGDRoIMzMzsXHjRlGnTh1hbm4uNm/eLOzt7YWFhYXYsmWLqF69uqhatarYtm2bsLGxEdbW1mLbtm3CyspK2NjYiG3btomqVauK6tWri61btwoLCwthb28vAgIChLm5uXBwcBAbN24UZmZmwtHRUaxdu1aYmpqKRo0aiYyMDG1fTukfunbtmqhRo4awtLQU27dvF3Xr1hVmZmbiyy+/FC1atBCmpqbi888/F506dRImJiZizpw5ol+/fsLExESMGzdOjBo1SpiYmIiBAweKWbNmCRMTE9G1a1exdOlSYWJiIlxdXcWTJ0+0fZrSP/RGJeX169eLunXrimPHjokWLVoId3d3cfToUdGkSRPRv39/cfjwYeHk5CQGDx4sDh06JOrWrSs8PT3FwYMHRe3atcXo0aPF3r17Rc2aNcWkSZNESEiIqF69uvDx8RE7duwQ1apVE76+viIgIEBYW1sLf39/sWHDBmFlZSWWLVsmVq1aJaysrMSqVavEsmXLhJWVlVi/fr3w9/cX1tbWYvPmzWLOnDnC1tZWbN++XcycOVNUr15dhISEiEmTJgl7e3sRFhYm3nnnHeHt7a3tyyn9Q507dxbe3t4iMDBQ2NraipkzZ4qwsDBRs2ZN8dFHH4lvvvlG1K9fX3zwwQfi+++/F82bNxc9e/YUERERom3btqJdu3YiIiJCdO/eXbRs2VIcP35cvP/++8LJyUkcPnxYtG3bVvj4+Gj7NKV/6I1qU87MzKRDhw707duXoUOHajucfyQuLg4/Pz8iIiJo2bKltsOR/oHjx48zfPhwNmzYgKOjY6mWHRkZyRdffEF0dDT169cv1bKlV+ONalO2trame/fumnbhiigpKYmGDRvSuHFjbYci/UNt27bFwsKiTKb9vHjxIi4uLnKwUQX2RiXl0NBQjh49yrx587QdCgCbN2/WPFD8Iz/99BO3bt3SvPb29kZHRwdfX9+yDk8qIyNHjqRly5b06tWr1MueNGkS9+7dY8WKFaVetvRqvFFJuXHjxuTm5mp6QfxdKpWq1GNRqVRMmDCBtm3b/ul+v0/Kjx494saNG7z11lulHpP0arRt25ZLly6Rk5NT6mXfu3eP+/fv4+zsXOplS6/GG9WmDODn58fRo0cJCAgA4P79+0yZMoVmzZpx7do1ateuzcKFC/nwww/p168fZ86cYfDgwTRt2pQVK1aQnZ2NoaEh8+fPp06dOkRERLBlyxZ0dXUxNTVl69atqFQq1q9fT2xsLDo6Orz//vt4eHjQt2/f58qMjY2lY8eO9OjRg759+/LOO+9out8tWbKErKwsZsyYgampKaampnz++efs37+f7OxsuU5cBaZWq2nRogW9evXCw8MDgJkzZ5KRkYFCocDDw4OBAwdy6NAhgoKCsLa2pnbt2ujp6TF79myys7NZunQpGRkZQMnSX61atQLA39+fqlWrsmvXLq2dn/TvVNZ2AK/S6dOn2bhxI2vXrn1u+507d1iwYAGtWrXis88+Y//+/QDo6+sTGBgIwMcff8ycOXOoXbs2SUlJLF++nM2bN7N161Y2bNiAra2tpuYTHh5OWloau3fvpnLlys/1G/1tmc/6RT9jYmJCUFAQhw8fZtWqVaxZs4bOnTtrEjeU3PqOHTuWjRs3MnHixLK5UFKZ8vX1RV9fn/fff1+zzc/PD3NzcwoLC/H29qZjx44EBgYSEhKCiYkJEyZMoEGDBgCsXLmS4cOH06pVK9LT05k8eTIHDhwASobrjxs3jn379jF48GCtnJ/077xRSTkzMxMDA4Pnlk8CqFatmqam4e7uTlhYGAA9e/YESjrxJyYmPteOq1AoAGjZsiX+/v688847dOnSBYCzZ88yaNAgKlcuubzm5uaazz0r82XeffddAN577z2++OKLl+5jZGSElZUV6enpf/u8pfLl/v372NraPjcHRlhYGD/99BNQMpjk6NGjODs7a/52evTooZlBMC4uTjP4CEoGPuXl5WFiYkKVKlWwsLDQ1KKliueNSsr9+/cnOjqaJUuWsG7dOs323y8s+uy1kZERUHK7aWpqyp49e14oc+7cuSQlJfHNN9+wfPlyvvrqKzIzM8nPz39pDM/KfJm/s8Dp9u3bMTc3x9/f/y/3lcqnrVu34uLiwtdff82AAQOIj48nLi6OHTt2YGhoyLhx43BwcODWrVusXbuWIUOGkJiYyOnTp/nwww9Rq9Vs374dQ0PDF8pev349zZo1Y/LkyVo4M6k0vFEP+u7evUtYWNgLtdX09HTNkOnvv/9eU2t+xtTUFHt7eyIiIoCSxUufdWe6d+8eenp6REVFYWNjQ25uLpUqVWLLli2a+XP/7rDXEydOACX9WFu0aAGAsbHxcwn+7bff5uLFi5rh4VLF8/XXX5Odna15WJubm4uZmRmGhoakpKSQlJREYWEhp0+fJjo6GjMzM06dOkWtWrWYOHEiTZo0Yd++fZryrl27pvm9e/fu/PDDD1y8ePGVn5dUOt6opHzkyBEMDQ1fSMp169bl8OHDeHh48Ouvv/LBBx+88NlFixbx9ddfM3ToUAYPHkxUVJRmu7e3N7q6unTp0gUnJyfGjBlDVlYWQ4cOZejQoRw7duxvxadQKBgxYgRhYWH4+PgAJc0dwcHBDBs2jHv37tGkSRNcXV3lg5wKbMuWLbz33nvUrFkTgPbt26NSqfDw8GDTpk00a9YMXV1dFAoFBQUFTJ8+nfr166NWq5k1axZXr17l7NmzeHh48OGHH3Lw4EFN2a6urjg5OREaGqqt05P+pTeq94VSqeSDDz5AV1eXuXPnAiXte9OnT3+u5vF3JSYmMnPmTObNm6dpT4aS7m7u7u5s27aNWrVq/a2y+vbtS3BwMBYWFn+638GDB/n666+Jjo5+oW1cqhhSUlLo0KEDs2fPpkOHDi+8r1armTx5Ms2bN+fjjz9GqVQyZcoULl++TGRkJNHR0SxdupRVq1a9sIDu9u3bSUhIIDIyEhMTk1d1SlIpeqNqykqlkidPnpTKwqPnz59n5syZ+Pv7P5eQAXR1denWrRvHjx//18f5PRMTE/Ly8jSzgkkVT25uLgqF4qVtwgAHDhzQ/DceNmwYQ4YMoV69etSrV4+4uDi6dOmCn58fPj4+mtnlnjExMeHp06cUFRW9ilORyoCu/xv0xGjTpk18//33LF26lKVLl3Lz5k3atGnD5cuXSUtLo0GDBvj5+fH48WMcHBxYsGABubm52NnZMW/ePIqLi7GysmLixImEhYXxn//8h/DwcExMTNDX18fX15eqVauiVqsJDQ0lMTGRt956i7lz51K7dm2ys7OZP38+jo6OPHjwgE8//ZRGjRpppvV86623uHr1KsuWLaNVq1ZcuHCBlStX4uLiwpkzZ1i3bh0eHh7cvHmTM2fOMGDAAG1fUukf+PDDD3Fzc8PFxYU5c+ZQpUoVTE1NmTdvHunp6QQGBlKrVi2aNGnCnDlzuH79OtbW1jRs2JAdO3aQmprKhx9+SHJyMhs2bKBp06b8+OOP7N27lzFjxhAdHc2tW7c0vXmkiuWNar7IysqiW7duZGVl0bp1a27cuMHTp09xc3PjwoULFBYW0qlTJ2JiYlAqlXTv3p3IyEiEELi7u3P48GEUCgX5+fkYGBhgbGzMoEGDCAsLQ1dXFw8PD0JCQqhcuTJDhw5l3bp1mJubM2rUKHbt2kWlSpXw8vIiKCgIIQQjRowgODgYtVqNt7c3u3fvRqVS4enpSVhYmKad8cCBA6hUKgYNGsQ333yDSqUiMjKSpk2bavuSSv9AVFQUAwcORF9fH09PT3bu3ImBgQHvv/8+W7ZswdTUlP79+3Pq1CmUSiWurq7cvHmTR48ekZGRQfv27blz5w42NjYYGBgQGxuLnZ0d3bp108wVLhfbrcC0Mzmd9jx+/Fhs2rRJKBQKkZGRIQICAoRSqRRpaWli27ZtQqVSiZSUFLFjxw6hVqvFjRs3RHBwsFCr1WLTpk3CzMxMREdHi0uXLon9+/cLIYQ4f/68OHTokBBCiHPnzonDhw8LIYTw8PAQw4YNE0IIcfLkSREZGSmEECIyMlKcPHlSCCHE999/L2JiYoQQQhw+fFicO3dOCCHEoUOHxPnz54UQQhw4cEBcunRJCCFEaGiouHLlyqu4VFIZOnv2rObvJDExUezbt08sXbpUuLm5ie3btwu1Wi3u37+v+fvMzs4WGzZsEJ06dRL79u0TGzZsEL/++qsoLi4Wn3zyibCyshKHDx8W27dvF7dv39buyUn/yhuXlP+pr776Stja2oozZ8787c/ExcUJJycnoVaryzAy6XVw4cIFYW1tLe7cufOn+23cuFEMHTr0he1nzpwRtra2Ijw8vKxClF4RmZT/hr1794pq1aqJhISE/+lzarVa1KtXT/z8889lFJn0OigsLBQtWrQQO3bs+Mt9MzIyhLm5ucjLy3vhvfj4eFGtWjWxb9++MohSelXeqN4X/0RISAjTpk3j+PHj//PMWzo6OgwZMkQzbFuSXuazzz6jTp06jBgx4g/3eTZToa2tLW3atHnphFQuLi58//33TJ069aWjT6UKQtvfCuVZYGCgqFGjhkhKSvrHZVy4cEE4ODjIJgzppWJiYkS1atVEenr6S99Xq9XP/e1kZ2eLwMBAMXDgwD8sMykpSdSoUeNv1byl8kcm5T+wefNmUbNmTXH16tV/VY5arRaNGjUSsbGxpRSZ9LrIzc0Vjo6O4sCBAy+8p1Qqn3sdGxsr+vfvL5YuXSqysrKEmZmZ+PXXX/+w7KtXr4qaNWuKgICAUo9bKlsyKb/EunXrhIODg7hx40aplOfv7y+mT59eKmVJr49JkyYJT0/PF7YHBASINWvWaF7HxcUJV1dXERISIlQqlRBCiD59+ojg4OA/LT85OVnUrl1brF+/vnQDl8qUTMq/89///lfUq1dPpKSklFqZV65cETVq1Hih9iO9uU6cOCFq1qwpsrOzNdueJdxnD/GysrKEEEKsXr1aTJo06bnPh4SEiN69e//lcW7fvi3q1q0rVq1aVVqhS2VMPuj7jaVLl7JlyxaioqJwcHAotXIbNWqEjY2NnNlNAuDJkyd89NFHBAYGYmFhgRACtVpNpUol/zsaGxuzZs0azYi8WrVqoVarefLkiaaM3r17c+rUKbKysv70WHXq1CEqKorNmzezbNmysjspqdTIpEzJVJz+/v4EBwcTFRWlmb2rNA0ZMoS9e/eWerlSxTNt2jT69OlDz549UavV6OjoUKlSJa5du8Z3330HwPTp0ykuLubo0aPUrl0bY2NjQkJCALh06RJ+fn507tyZ8PDwvzxerVq1iIqKIigoiM8++wzx5gzirZi0XFPXOrVaLXx9fUWzZs1Eenq6+Pnnn0VGRkapH+fmzZvCxsZGFBcX/639n93KSq+Xr776Sjg6Oorc3FzNtoKCArFy5UrRqlUr0aVLF/Hxxx+L27dvi8OHD4s2bdqI3NxcERkZKVq3bi08PDxEgwYNxLZt28T+/fvFO++887ePnZ6eLpo1ayYmTZr0Qq8Oqfx4o5OyWq0WM2bMEK1atRIRERHCzc1NeHh4iL59+4q4uLhST4xt2rQRx48f/9v7379//7kHPlLFlpGRIapXry5Onz6t2ZaVlSXGjx8v3NzcNK8///xzMWHCBCGEEO7u7mLFihVCCCHS0tLE6dOnNW3OeXl5wtzc/G9XIjIyMsSSJUtEpUqVhJeXl0zK5dQb23yhVquZMmUK0dHRREZGcvjwYZYsWfL/2DvvqCiS7+0/BAElZ0FAkbxiAGQKqBsAACAASURBVEGSiglFEAyoIKwRVMDFnCOCOXyNa8AAmF0DCIiuEV10AREJwoqIIEkFCRJncGbu+wc/+hXTgkswzOccjzNNd9Xtnu7bVbduPYXTp08jKSkJZ86caXZ5zC9NJKEPupQ3btyAp6cn2rVrB6p7eTarLXxaFyLCzJkzMXnyZFhaWiIjIwNlZWWQlZWFkZERsrKyUFpaCllZWQwePBi1tbXIzs6Gr68vNm7ciOLiYqiqqsLS0hIdOnQAl8tFhw4dYG9vzyya+iVOnz4Na2tryMrKwsTEBKGhoZgzZw7/vvoWadNXQhvB5XJp+vTpZGxsTK9evSIWi0WLFi0id3d3MjU1pVWrVrVIvbm5uSQnJ0dsNpvZ9qlu5F9//UXDhw+ncePGtYgdfFoXHo9HwcHB1L17d8rOziYHBweysLAgCwsLunz5MuXk5NCsWbPI39+fOWbAgAHMpKXExMTPln3p0iXq37//v9qwbt06+v3334mIqLa2ljp37kx6eno0Y8YMflbQN8ZP11LmcrkYPnw4Tpw4AUVFRXh5eYHNZiMvLw9lZWU4e/Ys/Pz8AADnzp1r1rrV1NTwyy+/NBC/FxAQgICAAGJjY7F06VLcvHkTffv2xYgRIyAiIoKMjAwAH7ek+Xw/5OXlYeHChTh27BjOnTsHTU1N3L9/Hx4eHrh48SLS0tIwevRoHDhwAMePH8f27dvBZrOZRXZ79uz52bKHDRuGlJQU5OfnN9geGxsLPz8/pKWlAQCeP38OSUlJAEC7du0wd+5c1NTU4MmTJ/Dw8GCmcfNpe34ap8zj8VBSUsKIx1+9ehVXr15FeXk5Ll68CCsrK8jIyODq1atISEiAra0tjh8/3uhFTxuLi4vLRyEMPz8/ZmmgVatWYdOmTbC1tYWioiLu3r0LoHErXfP5Nnj/Bcrj8eDq6opffvkFcnJyKC8vh5ycHABg2rRpUFBQQHJyMgYPHsw4ZiJCREQEunbt+q911esw1zcg3r59i7CwMCxcuBBZWVlYs2YNbty4AScnJxw5cgTFxcUAADMzM1RXV8PFxQW5ubmYOHEis9Dv+6SmpsLf3x8PHz7kNwxaiZ/CKVdXV4PL5WLmzJmoqqqCqqoqsxbexo0bcezYMYwfPx4uLi5ITU3FypUrMWbMGISFhUFaWrrZ7CAijB07FpcvX24QrxYXF8eFCxdARHjz5g1ERETQtWtXGBoaIi0tDX///Xez2cCn5al/gbLZbOzfvx+VlZUoLi6GiooKlJWV0b59e2RnZwMA+vXrx6ySPnXqVKirq8PMzAxycnJ49+5do+p7f6xi5syZWL16NQ4fPozAwECMGzcOW7duha2tLXR1dbF06VK4u7vjf//7H2bNmoWgoCCEhYWhpKQErq6uDepct24dPDw8oKKigo0bN2LVqlXNeJX4fI4f3ilv374dffv2ZZZdiomJgY6ODvLz81FbWwtTU1NwuVxER0djyJAh2L17NyIiIjBjxgwAaLZuXX0+qrKyMjQ0NDB37lw8e/YMlZWVOHXqFGxtbXH27FlcunQJ8+fPB5vNhqOjI2pqalBYWNgsNvBpGXg8XoPvRITDhw9j0aJFWL16Nc6ePYtu3brh2rVrsLGxQXZ2NrZu3YqnT5/i9OnTzOrqenp6MDY2xunTp0FEaNeuXaPq19HRQUpKCq5fv45169ahvLwcLBYLADBkyBBoaGhgz549CAgIwOTJk6Gjo4OjR4+iR48esLW1RYcOHRAaGoqamhqMHz8e169fR1FREdq3b4/o6GgoKysjPT29Wda25NMI2i6c3fKcPn2aBg8eTP379ydLS0vq2LEjZWVl0dGjR2n06NEUGBhIt2/fJlNTU8rMzCQiYgbdmisd7v1BlKysLDp48CDp6OiQjo4OmZiYUHJyMm3YsIGsra2Z/RITE2n69OlUWVlJxcXFzWIHn5bhzz//bKAtcffuXWKz2ZSQkEAqKipkbGxMOTk55O/vT+Hh4URU9/uuWrWK7OzsaOnSpQ3Kq59a3RjevHlDRHXKcfr6+sy0ax8fH5o8eTIR1d3Pf/31F3Xr1o0yMjKIqC5f2cXFhSwtLemvv/5iynv48CHp6+tTly5d6PHjx6StrU1mZmY0duxYio+PJyLi34+twA/llHk8HpWXl9Nvv/1GXC6Xli5dSgYGBuTi4kK1tbW0fv16Gj16NHG5XHJ1dSUXFxeaNGkSRUZGtqhdNTU1RETUvXt3GjhwID1//pykpKRo79691KtXL+JwOGRqako+Pj40ZcoUMjAwoICAgI/Ojc+3BZfLpSNHjtDUqVMpMDCQzM3NadCgQTR48GCaNWsWDR48mObPn09r164lLS0t2rhxY4Pj3xeqb2oGxNOnT2nIkCHMwgsbNmwgOTk5io6OpqqqKtLX16c7d+4w9cTGxjLHZmRk0KFDhxrY8fbtW5KUlCQvLy9ycXEhGxsb+u2338jCwqLBccuWLWuRyVV8/j8/lFOux8TEhOLi4khbW5tUVFSYGz4zM5McHR2Jy+XSyZMnydPTs1VWBRk3bhyFh4fT5cuXSVdXlwoLC8nW1pZOnjxJJiYmFBUVRa9evaJr167R9u3bqaKiosVt4vN18Hi8Bg40NzeX1q5dS/369WOcoJeXF7Vv356uX79OHA6HoqOjSUtLi8aPH8/M5Hu/R9aUF256ejpVV1cTm82m1atXk7e3NxHVOXVxcXGmhbx161ZmQsrn4HK5tHLlSrK0tKSQkBBycHAgJycnqq2tpYkTJ1Lfvn1JS0uLVq9eTbNmzSJ9fX0mrY5Py/FDxJTPnTuH4OBgZvDMysoK06ZNg7W1NYSFhREUFITa2lqcPHkSnTp1gqCgIMaPH4+KigrcvHkTFRUV/9kGHo/XILZYUFAAoG6wp1u3bhATE4OdnR2UlJRw4sQJTJgwAWfOnEHPnj0hKSkJZWVl2NjYYP78+ZCQkOCnKH2jCAgIQEhICMXFxVi7di1UVFRgbW2N169f48WLF2Cz2bh9+zasrKxQU1MDISEhWFlZwdfXF+Li4hAXFwcRMYOBgoKCjcqsSUhIQI8ePTB//nzY2NggJycHI0eORElJCcLDwyEkJISBAwfi0qVLOHPmDBYuXPjF1Ufu3r3LrKjt7++P+Ph4AMC9e/cQHx+PwMBA6OnpQUpKCnp6epCVlUV0dDS8vb2b50Ly+SzftVOOiIjAnj17kJmZifv372P58uV49eoVTp06BWlpaQQEBGD//v2Ij4/HwIEDkZCQgDlz5gAAhIWFsWDBAkyYMIHJ3/waXr58idTUVAgKCkJQUBAVFRVIT0+HtbU10tPTISoqitLSUly9ehUAsGnTJvzvf/9DUlIS/vzzT8TFxUFZWblBmUQEISGhr78wfJoV+iAVbN++fejfvz+Ki4vB4XDQvXt3uLu7IzExEStWrICenh7U1dWRmZnJHOPg4IAnT56gvLy8SemN5eXliIiIwO7du7FkyRJERETA1NQUR48eRW1tLWxtbbFmzRqkpaVBXFwcwP/Pa9bU1PxoELKe4uJihIWFwcnJCYMGDcKMGTNgZWUFRUVFbNq0CYKCgggICIC5uTl2796NBQsWQF5eHlwul58a18J8l065uroaycnJ2LZtG3JzcxETEwNLS0tISEigR48e0NXVhY6ODgQFBWFvb4/9+/cjODgYISEh0NPTY25UIyMjdOrU6T/Z8scff2Dq1KkAgFWrVqFfv354+PAhhg0bhsDAQBw6dAienp54+fIlqqqqYGVlBUdHRzx69Ajm5uaYN2/eRzbwc5K/Dej/JDXf/z3Kysrw4MED3L59G7t374aoqCgkJCQwbNgwJCQkYP/+/Zg+fTqSkpKgra0NoK63tHz5cujr60NUVLRJNuzfvx8PHjyAnJwcxMTEAAArVqxATk4OysvLMXnyZAwbNgw+Pj7o2bMnpKSkGuQb18uBfsjo0aNhZ2eHwMBAAICqqio4HA7mzJmDlJQUHDt2DIKCgvj9999hbm6OIUOGoLi4GEJCQvz7s4URoO/otcfj8bB69WrExcVBTU0N3t7eMDExQXBwMAICAlBZWQk5OTkUFRXB0NAQZ86cAZfLbdDq/PD7f6Wqqgqurq7g8XiwsLCAkZERwsLCoKmpCVtbW8ybNw8SEhJQUFDA4cOHISAggKKiIlhaWmL69Om4desWIiIiICws3Gw28WleUlNTceHCBTg6OqJXr17o378/FBQUICMjg5KSEpSXl+PgwYOwsrKCpKQkBg0aBCcnJ9ja2jJlFBcXQ15evlH1PX78GO3bt4eWlhYiIiKwYsUKjBgxAj179oSNjQ1kZWUxe/ZsSEtLw9/fH0SE2tpaiIqKYvHixRAWFsaGDRv+tZ6kpCSMGjUKx44dQ79+/eDg4AAPDw9YWFhASUmJ2Y+IsHTpUly9ehU3btyAoqJi0y8in8bTZtHsJhIVFUVjxoyhjRs3UlhYGBkZGdHJkyeJzWZTXl4eSUhIkK2tLfF4PIqMjCR1dfVWm9N/+fJlat++PT1//pyIiC5cuEA+Pj4UFxdH+fn55OPjQ1JSUg3SiRYvXsxsLywsbBU7+fw7H6ZC+vn5kbm5OR06dIgcHR1px44dVFxcTOHh4ZSYmEhv3rwhGxsbGjlyJI0ZM4bi4uIaHN/UrJmKigqaO3cuDRs2jMrLy6mgoICWL19Ovr6+5OXlRb6+vpSUlEQDBgygmzdvfmR7fHw8aWlpNbpeT09PUlNTIy8vL/r111+pqKjok9eCx+PRqlWr6JdffqGXL1826Zz4NI3vxilfvHiRBAQE6MWLF0RUlwK0ZMkSunv3Lunq6tKUKVNIRUWFGd12dXVt1iWd/o0RI0bQ4sWLiagul3Pz5s20ePFievnyJSOAdOPGjY+Oc3Z2pv3797eanXwaR1RUFBUWFtK2bduIw+FQWFgYdevWjdavX8/sU1VVRefPnyc9PT1SVlb+5NJOX8vs2bNpwYIFtGvXLpo6dSqVlpZSTEwMzZw5k2xtbenw4cOfPI7H45G2tjY9ePCgUfW8evWKBg0aREFBQQ3K+Bx+fn6kp6dHeXl5TTshPo3mu3HKRESOjo60aNEiIiLKycmhsWPHkqKiIqOuVZ+L6e/vTyYmJg2ExFuaxMREMjQ0pPT0dCKqm1QwZ84cSk9Pp6qqKho0aBA9ffqU2b/+xg8JCaEBAwa0mp18GsLj8Ro40OTkZFqzZg3Nnj2bMjIyPjmBoqSkhGpqamjkyJFkZ2dHHTt2bJJOdmNgsVh04cIFGj9+PAkICFBYWBiz/UP7P2TlypW0YMGCRtd14MABMjQ0/Gx5H7J582bS1tZmGkh8mpfvyim/7/gyMzNJTk6OLCwsqKCgoMF+rZF7/ClWrFhBdnZ2RFTXUqp/KRw8eJCcnZ2prKzso5u+pqaGZGRkKD8/v9Xt/dl53xm/P4Hi/UVK582b99EEisWLFxOLxaKsrCyaOHEieXt7t9hKMXFxcTRmzBg6ffp0A5u/VN/jx49JXV290TaxWCwKCAhoUs70jh07qEuXLkzIjk/z8V05ZaI6x9e/f39SV1envXv3NugytjUFBQXk5uZGJSUlDR6I9/WTP8WkSZP4K4y0EZ+bQFH/+5WVlZGOjg4zUUNfX5/27t1LRHVjB9ra2vT27dsWtXHevHm0adMmImp8jLpbt24UHR3dkmbRvn37SENDo0EPkM9/57tLiRs6dCgePHiAhQsXwsvLi1kN+FtARUUFJ06cgKysbINUJBERkS8e5+Liwiyq+in5RD4tw5cmUMTGxgIApKWlceHCBRgZGUFOTg5r1qxB586d8fr1a3h7eyM4OBhSUlItYl/9fZ2RkcGkoTU2Ha1eIrampgahoaEtYp+XlxdWr16NgQMH4smTJy1Sx09JW78V/o3S0lJ69eoVEdXF+1RUVCg4OLiNrfoyTe3K1tbWkry8PGVnZ1PPnj35oYxWon7wODU1lYiIXrx4QZs2baLu3buTo6PjJ1ulM2fOpF27dtHIkSM/EhNqCUpLS2nTpk3/2tt6n5cvX9LTp0+pY8eOdP36derbt28LWkh07NgxUlVVpZSUFCKqC8nxpQK+HiFfX1/ftn4xfIn58+fj5cuXEBUVxbBhw7Bjxw64ubl9lNT/LdEUu4KCgpCUlARJSUkUFBTg/PnzWLt2LT9vuRUwMDDAgwcPkJeXh6FDh0JcXBx//fUXhgwZgvPnz0NWVha9evVqcMyuXbsgJiaGhIQE+Pn5ITY2Frq6ui1mo5iYGPr27duk3PrBgweDw+EgLy8PHA4HYmJiGDVqVIvZ2LNnT3Tq1Alubm4YMmQI7ty5gx07dsDJyanF6vyhaeu3wpeora0lRUVFCgkJISUlJTp//nxbm9TsPHv2jDQ0NMjHx4cMDQ2pU6dObW3ST0ViYiJ16dKF7t69S0R1qY2hoaGfVUJTV1cnaWlpcnV1JXl5+Y/U/L4FCgoKSF9fn2xsbKhXr17k5+fXKvWeP3+elJSU6Nq1ayQlJdWq2U8/Et90TPnmzZtQUlLCjBkzsGvXLhARs5zNj4KWlhaioqIQHh6OjIwMqKqqtrVJPxU9e/aEra0tXF1d4e3tDRkZGVhZWTEz2t7XjmCz2cjNzUVtbS2kpaWRlpaG6dOnt5Xpn0VFRQVRUVHIzs5GUlISNDQ0WrxONpsNRUVF7N+/H7/++isMDAwQFhbW4vX+kLT1W+FLDBs2jNq1a0cmJiYkKSlJI0aMoJycnLY2q0XIzs4mKSkpMjExaWtTfjoaO4Giurqa+vTpQ8nJya1p3ldTWFhIysrKdOvWrVapy8rKimRkZGjAgAEkKipKlpaWLV7vj8g3rX3RsWNHGBgYwMvLC8OHD/9Pam7fA+np6Xj79i369OnT1qb8dBw8eBB79+5FSkpKA2lNPk3j1atXuHTpEg4dOoTk5GSw2Wz+tWwi37RT5sOntWCz2Th27Bjc3d0hICDAdyTNAP/l9nU0yxA/l8tFRkYGsrKyUFpaipKSEpSUlKC4uBilpaWNyr3t0KED5OXlIS8vD1lZWcjJyUFBQQEGBgYNFKu+Z4qLi2Fvbw8tLS3s3bsX48aNg6ioKE6ePIlp06ahqKgIoaGhWLJkCR4+fIjLly9j586duHTpEiIiInDp0iXs2bMHISEhSE5OxooVK3Dy5ElUVFRg5syZ2L9/P0aOHNnWp9li1NTUYOzYseBwODh58iQmTJiADh064MiRI3BycoKysjL27t2LUaNGQUtLC1u3boWDgwN69eoFX19f2Nvbo1+/fli4cCHs7Oxgb2+PmTNnws7ODhMmTICLiwt0dXUxffp0DB8+HCNHjsS8efNgaWmJMWPGYNWqVfjll1/g7OyMTZs2QVVVFRMnTsSuXbsgLi4ODw8PBAQEoLa2Fr/99huCg4NRWFiIRYsW4cyZM3j69Cl8fX1x7tw5mJubN+u14fF4ePr0KZ49e4aioiIUFRWhsLAQRUVFX1wVu127dlBUVISSkhIUFRWhqKgIbW1t6Orqflb2synk5uYiLS2NsaWwsBCFhYXMwq6fQlBQEPLy8lBWVmZs0tDQQPfu3Ru9mOz3zH9qKRcVFcHV1RX37t2DoqIi1NXVISUlBUlJSUhISDCf/y29i4jAYrFQUVGB8vJyVFZWoqKiAiUlJXj27BnExMQwd+5cLFu27GtN/SYwNjZGt27d8OLFCyQmJmLo0KFgsVi4e/cuzMzMoKSkhPDwcPzyyy/o1asXTp06BQ0NDdjY2CAwMBCysrJwcXHBwYMHISoqCg8PD+zbtw+CgoLw9PTE/v37ER4eDgsLi7Y+1RZh9OjRYLFYEBISwp07dzBw4ECwWCz8/fffGDZsGIqKipCQkAAHBwdkZWXh8ePHcHJywuPHj/HkyRNMmDABsbGxeP78OSZNmoSoqCjk5uZiypQpuHLlCgoLC+Hu7o6QkBCUlpZi+vTpOHv2LCorKzF9+nQcP34cbDYbM2bMQGBgIN69e4eZM2fiyJEj4PF4mD59Og4dOgQBAQHGQQsJCWHatGkICAiAqKgoJk+ejMOHDyMuLg5du3b9z9eEiLB48WIEBARASkoKXbp0gaysLGRkZCAtLQ0ZGZkvOrJ3796hrKwMb9++RVlZGUpLS5GdnY3y8nLMmDEDW7du/Sq7AgMDsWzZMnA4HOjo6EBOTo6xSVZW9ou60jweD2/fvkVpaSljV15eHvLz8zFs2DCcOnUK7du3/yq7vgf+U0t52bJlkJWVxZ9//tliy48TEfLy8uDt7Q0bGxuYmJi0SD2tgZSUFGpra7F582YkJCTAzMwMPB4PcXFxMDU1ZZYO6tmzJ8TExNC7d2/o6OhAUlISvXr1gqqqKuTk5NC9e3dIS0ujY8eO6NmzJ4SFhZmslB95GXhpaWmUlpZi48aNGD58OExNTUFEiI+PR58+fcDhcPDo0SP06dMHbDYbKSkpMDExQXV1NZ48eYLevXvDzc0NmZmZ6NWrF5ycnJCTk4MePXrA0dERBQUFMDQ0hK2tLYqKimBgYIDBgwejpKQE+vr6sLa2RkVFBXR0dGBpaQkWiwUtLS2YmZmBy+WiS5cuMDExgaCgIDQ0NGBsbAwRERGoqanByMgI4uLiSEtLg7CwcJPF7j/H9evXceHCBZw9e7ZZdY6LioqYZ27o0KFNOjY/Px8LFizAnj17oKen12whjMrKSvj6+mLHjh1Yvnx5s5T5LfKfWsq6urrw9/dnVlhoSbZu3Qpzc3PMnTu3xetqKYqLi6GhoYE9e/YwS/Y0FxMmTICPjw98fHyatdxvidraWmhpacHT07OBgPz3RP/+/XHmzBk4ODg0S3krVqzAmzdvMGPGjGYp730OHjwIJSUlrFu3rknHhYSEYNeuXdi+fXuz23T37l1cuXIF165da/ayvxW+OmhUW1uLnJycBjmQBQUFGD9+fLMYBtSta1ZWVgYA6Ny5M1JTU5ut7LZg1qxZMDMzQ7du3Zq97OnTp2P9+vUN1oX70Vi9ejXk5OTQv3//tjYFBw4cYPQxPkdUVBSeP3/eYJu3tzfmz5/fbPn2qamp0NTU/KpjHz16hPHjx8PV1RVZWVnMOpL1aGpqftUzl5aWhs6dO7eYTT+6zsZXO+Vnz56hY8eO/yq201j+bTBQU1MTaWlpzVJXW3Hv3j1YWVm1yBTqHj16AKj7XX5UoqOjYWpq2qQQTUusCs7lcuHp6QkzM7Mv7vcpp2xmZobCwkK8fPmyWWz5559/0KVLl6869sqVK/j1119x6tQpFBcXf+QAu3Tpgn/++afJ5aampraYTSoqKigsLERVVdVXlf898NXeIS8vDyoqKh9t5/F4WLduHZKTk6GoqIjt27fjypUrCAkJwbt376CmpgZ/f3+IiYnB19cXUlJSSE9Ph76+PqZOnYoVK1agtLQU3bp1a6D+pqKigtzc3K8195vgzz//hIWFBQwNDZmQz4IFC/D69WvU1tbCxcUFY8aMQWhoKI4dOwYFBQVoaGigXbt2WLJkCUpLS7Fhwwa8fv0aQJ0uSL02w8qVK+Hu7o5hw4a12fm1NOfOnUPv3r3Rq1cvWFhYoKCgAD4+PjA0NER6ejo0NDTg5+eHcePGwdHRETExMRg/fjy6deuGzZs3o7S0FGJiYli5ciW6dOmCGzduMINxEhISOHToELhcLvbs2YO///4bAgICGDVqFFxcXODg4NCgzL///ht9+/bFkCFD4ODgABsbG0Zlbv369SgpKcHdu3eRkJCAo0ePYsuWLVBTU8OcOXOwbds2GBoaNss1yc/Pb/Ac1tTUYOnSpSgsLASXy4WHhwdkZGSwc+dOcLlc/PLLL1i2bBkiIyNx48YNxMTEIC4uDnl5ecjKyoKrqyvs7e3h5uYGVVVV5OXlNdmm3NzcBr2Z5rRJWFgYHTt2RH5+fotqjrQlX+2UieiTIim5ublYv349Vq5ciaVLl+LWrVsYOHAgRo8eDaBuefbQ0FC4uLgAAHJycrBv3z4ICQlh69at6NWrF6ZPn47o6GiEhIQw5QoJCX0zEp1fy/Xr1yEvLw8FBQVm2+rVqyEtLQ0Wi4VJkyahb9++OHLkCE6cOAFxcXF4enpCR0cHALBt2za4ubmhV69eePXqFX777TecP38eANC9e3dcv34dy5Ytg4SERJucX0sTExMDLpcLdXV1ZtuLFy+watUq9OrVC2vXrsW5c+cA1MmlHjlyBECdxOSyZcugoaGBx48fY9OmTThw4AAOHTqEvXv3QklJCRUVFQDq4qH5+fk4efIkhIWF8fbtW6au98v8+++/G9gmLi6OY8eOISIiAtu3b8fOnTvRv39/xnHX06NHD4SHh2Pq1KnN0mMiogapa/fv34eioiJ27doFoG5wzNnZGfv27UPnzp2xevVqnD9/Hq6urkhMTGTsi4+Px4kTJ7Bz506mLEFBwa965lrSpv9i1/dCs2tfqKqqQk9PDwCgr6+PgoICZGZmwsPDA87Ozrh69WqDLt2QIUMY5/7o0SMMHz4cANC3b98W06ltK5YvXw4fHx/IyMgw286cOYMJEyZg6tSpeP36NSIjI2FsbAxpaWkICws3eKDj4uKwZcsWuLq6Yv78+aiqqmK6cTNmzEBeXt4PrTewYsUKTJo0CWpqasw2ZWVlprdgZ2eHxMREAGAyBqqrq5GcnIylS5fC1dUVGzZswJs3bwDU6V74+voiJCSECXPExsbCycmJcZjS0tJMXV/KQqjvodja2iIlJeWz+y1cuBA3btxAXFxck8+/MWhrayMuLg67d+/Go0ePUFBQAFVVVSbGO2LECDx69KhF6v6ebPqWafbg5vs5kUJCQmCz2Vi7di22bdsGXV1dhIeH4+HDh8w+YmJiDY7/kWcABQUF4bfffoO+vj6UlJQQHx+PuLg4BAYGQkxMDDNmzEDnzp2RlZXFpMkVFhaCzWYDqAsNHT169KNrBgCbN2+GsbExxo0b19qn1WocOnQII0eOZ0wvlAAAIABJREFUhLGxMdN1/fB+qf9en8fK4/EgISGBU6dOfVTe8uXL8fjxY0RHR8PNzQ1BQUHgcDjM9f6QL+XGNva+rX+xtFQueefOnXH8+HHcu3cPe/fubfZJKj+KTd8yX91SFhQUbPQqGVVVVVBQUACHw8GVK1c+u5+RkRHz93v37qG8vJz5G4fDaZYZRm2JiopKg4e+srISUlJSEBMTQ3Z2Nh4/fgwWi4V79+5h/fr18PT0xNWrVxEXFwcigrm5Of744w+mvPT0dObz27dvoaKi8kPrMMvLy0NQUBDV1dXMtlevXiE5ORlAXcz+Q/1jCQkJdOrUCTdu3ABQ17V++vQpgLpxEUNDQ3h6ekJaWhr79+8HEWHZsmXMjLP3wxdf4vr16wCAa9euMYOuHTp0aGArAJSVlUFDQ6PZGh8fPodFRUUQExODnZ0dJk6ciOTkZBQUFDDjMfU9sQ8RFxf/yNavfeZa0qb/Ytf3wlc/wV26dGn0IICXlxemTJmCjh07Qltb+5MXGqhL61qxYgXc3NxgbGyMjh07Mn/Ly8v76tSfbwVHR0csWbKEiYlaWlri4sWLcHFxQefOnWFoaAhRUVG8e/cOHA4HaWlpMDMzQ0pKCi5evIhFixZh8+bNcHFxAZfLhZGREZNE7+vrCxcXF1y8ePGHFRefMGECJkyY0MDxampqIiIiAhs2bIC6ujrGjh3LLK1Vj7+/PzZt2oQjR46Aw+Fg6NCh0NXVxa5du5CTkwMigqmpKe7cuYOtW7fin3/+gZOTE6SkpDBq1Cg4Ozv/q221tbWYPHkyiAjr168HUBfuWL9+Pc6cOcMM9O3YsQNjx47F0KFDm2UiVOfOnZGfn8+E+p49e4Zdu3ZBUFAQwsLCWLp0KSorK7FkyRJmUO1T94eOjg6EhIQwYcIEjBgxAm5ubsjLy/uqLIquXbsiPz+f+d6cNr179w6FhYWtIkfaVnz15BEOhwNJSUncuHHjk93p5ubUqVOoqanBvn37WryulmL+/Pm4ffs29uzZ88muMBFh4cKFUFNTw7x58+Dm5ob27dtjyJAhOHToEIKDgxvEU9/n3LlzOHfuHO7fvw9lZeWWPpU2Yc+ePdi+fTsCAgIgLy+PgoICzJ07t0Hv4WtJTk6Gv78//vjjD5w6dQrPnj3DmjVrGnWsg4MDjh8/3mCs4HPs2rUL6enpuHXrFsTFxf+r2Rg3bhx69uzJjMU0J5GRkUhJSWny9d26dSsSExMxf/78ZrcpKysLS5Ys+aHz8b+6DyAsLAxNTU1kZ2c3ozmf58WLFy0y6aI1WbBgAZ4+fYqsrKxP/v3y5csoKCgAj8djkucVFRXh7OyMqVOnwtfX97N5t+Hh4fD09PxhHTIATJkyBVwulxnMa06uX78OGxsbCAgIYMiQIbh79y5qa2ubvZ7w8HAsWrSoWRwyAHTr1u2z99N/JTs7+6ueOQMDA7x48aIFLKpzyvr6+i1S9rfCfwrMDB8+HEFBQXj+/HmLrcJcUVGBuLg4REVFYdCgQS1SR2sxfPhwTJkyBerq6kzeNovFwsWLF5GVlYWdO3diwIABcHd3x8mTJyEvLw97e3sICAhAWVkZtbW1OHXqFKKjo5l4cnx8PJKTk+Hn54ctW7bg3r17bXyWLYerqyv69OkDKysrhIaGQk5ODoGBgQgNDcW7d+9QUVGBS5cugcPhoKysDOHh4eByuXjz5g0uX74MHo+H169f4+rVqyAiFBQU4Pr16+BwOLh69SoTAqipqYG8vDxiYmLw7NkzREdHA6iL4cfExAComyDx4MEDAHV5yfWO8dGjR0yMOz4+npkRFxMTgydPnmDr1q2YOXNms7X0hg0bhitXriA5OfmLanBN4d27d0hOTkZkZGSTdS8AwNzcHP/88w+ioqI+G6psKjweD5mZmTh9+nSL9Aq+Jf6T9kVlZSXmzJmDqKgoFBQUQEVFBTIyMpCUlGygFtdYlbh6dbi3b9+ivLycUYkyMDDAnDlzMHHixK819Ztg6NChEBQURH5+PiorK6GhoYHa2lq8fPkSxcXFUFZWBpfLhYiICAwMDHDlyhXIyMhg8ODBiI6ORnV1NSorKyEpKQkiwujRo3Hp0iXweDyMGjUKoaGhuH37Nrp3797Wp9oizJgxA0lJSRAUFEReXh46d+4MFouF169fQ0tLCyUlJSgtLYWBgQHy8vJQUVGB7t27IyMjAywWC0ZGRkhOTgaXy0WfPn2YAVQdHR1ER0dDSUkJ/fv3x61bt8BisSAnJ4eqqioICQnBxsYGkZGREBISgq2tLSIiIiAkJAR7e3uEh4dDQEAAI0aMQEREBIgIDg4OzItgxIgRuHLlCrhcLuzt7XHjxg08ePCg2Zb+2rNnDw4cOICsrCx06tQJsrKykJWVZVTivvT81b/A6lXZSktLkZ+fD01NTXh5eeG33377KpuuXr2K1atX4/Hjx1BSUmIkeWVkZJjB7c/B5XJRXl7O2FRWVob8/HwoKCjA0dER27Zt+6EHtJtN5L6yshK5ubkN9JRLS0tRXFzcqFa0hIQE5OTkGC1lOTk5yMvLQ11dvUkr+X7L1NTUYPLkydDR0YGvry88PT0hKioKXV1dbNmyBdbW1ggKCsKWLVsQHx+PFy9ewNbWFg8fPsTJkydx69YtrFq1CqKioti8eTPWrVuHQ4cOobq6GrNnz8bOnTt/6HQjLpcLHx8fcDgc7NmzB97e3ujQoQO2bdsGDw8PKCsrw9/fH1OnToWWlhaWL1+OiRMnwtjYGLNnz4abmxusra3h7u7OzBJzdnaGkZERzMzMsHfvXri6usLd3R0GBgYwMzNDcHAwzM3NMXnyZCxbtgxaWlqYNm0a/Pz8mPUjt27divbt2+O3337D7t278e7dOyxYsAAHDhxASUkJVqxYgSNHjuDFixdYt24dgoKCmAlBzUllZSWys7MZPeV6/eJ/01N+X0tZUVERXbp0abYJSLW1tXj+/PlHNtXU1Hz2GEFBQSgoKDSwS11dHfLy8s1i07cOf+WRNubp06ewtLTE33///dGD2rt3bwQEBKB3797MNiKCvb09TExM4Ofn19rm/nBwOByoqqoiNjb2o+weGxsbzJw5E2PHjm0j6/j8jPy4yX7fARwOB5MmTYKvr2+jW04CAgI4cuQIDh48yMQ0+Xw9t27dgqam5ifTLZ2dnT9Kr+PDp6XhO+U2ZMuWLZCQkIC3t/dn9/lUtoWKigp2796NSZMmfbEbyOffOXPmDKPD8iFjxozBtWvXGF0MPnxaA75TbiMSExOxY8cOBAYGfnJ2Un1UqT6eXq8rXY+zszN69uz5Q6/A0NKw2WxcunTpsxrgcnJy6NevH8LDw1vZMj4/M3yn3Aaw2WxMnDgR27dvb6B4Bvz/lnH9NNyUlBSMGjUK+/fv/6ic33//HX/88Qdu377d8kb/gFy7dg3dunVDp06dPruPs7Mzzpw504pW8fnZ4Q/0tQFLly5Feno6Ll682EADISAgADU1NZgzZw6AuiR8AQEBrFixAhMmTPhkizoyMhLe3t5ITk7+4VT1Who3NzdYWVl9MXxUXl4OdXV1ZGdnQ1ZWthWt4/OzwnfKrcz9+/fh5OSEpKQkKCkpAahLjK8X2unQoQNKS0shKysLdXV1WFhY/Os01xkzZoDL5TJav3z+nerqaqiqqiI9Pf1fZ0GOGTMGDg4OmDp1aitZx+dnhh++aEUqKysxadIk7Nu3D0pKSiAixiEDdapiO3fuZLR527VrByJqEE/+1MDf9u3bcfv2bX7sswlERkbC1NS0UdPSXVxc+CEMPq0G3ym3IosXL4alpSVGjx4NHo8HAQEBCAoKIj09nZEsnTt3Lt69e4fIyEiIiIhATEwMJ06cAFAXX543bx4KCwsblCspKYmgoCDMnDmTEXDn82XOnj3bKPU3ALC3t0dsbCyKiopa2Co+fPjhi1bj2rVr8PDwQHJyMqMmxmKx8Pvvv+PEiROQkZGBgYEBFi9ejNTUVPj5+aG2thYzZ85EQEAA9PT08PDhQyxZsgTu7u6frGPBggXIzc3F2bNnf+jFAv4rFRUVUFNTQ1ZWFuTk5D65z6NHj9CpUycmxDRhwgRYW1vD09OzUXW83wPiw6dJEJ8Wp6SkhDp16kTXr19vsG3mzJlkbm7OfN+yZQt5enoSEZGdnR116tSJ4uPjKT8/n+7du0dVVVWfLD83N5eIiKqrq+mXX36hU6dOtfAZfd+cPHmS7O3tP/m3hw8fkrm5Obm4uJCDgwPFxcURl8ul0NBQGjBgQJPqKSgooJ07dzaHyXx+Iviv8lbAx8cHo0aNwpAhQ5CRkYGysjLIysrCyMgIWVlZzMDe4MGDUVtbi+zsbPj6+uLVq1coKyuDqqoqLC0t0aFDhwYx5cLCQuzevRvdunVDYmIi2rdvj2PHjmHu3LkNRMb5NOTMmTOfDF0QEY4fP47169fj9OnTSEpKwpkzZ1BTUwNbW1skJSWhoKDgk2XSBx3OGzduwNPTkxkX+PDvfPh8Dr5TbkGICBcuXEBcXBzmz58PR0dHTJ48GXZ2doiMjISdnR3Gjh2L33//HQBgbGyM58+fo6qqCqamptDV1f1IOL1+Msnp06dhbW2Ndu3aoXv37li4cCGAOr0Mb29veHh48B3BJygtLcWdO3cwcuRIZltubi5YLBZqa2vRrl07nDp1Cn369MHkyZOxfft2iIuLQ1RUFI6Ojsxq2fXUO9z3w0XR0dH43//+B1FRUXh7e0NAQIAfTuLTaPhOuQUpLCyEt7c3goODcfHiRWhqauL+/fvw8PDAxYsXkZaWhtGjR+PAgQM4fvw4tm/fDjabzaxK8qWFOp8/fw4fHx94eXnh9u3beP78OS5evAgAWLZsGYqKihAQENAq5/k9ERoaisGDB0NKSgo3b96Evr4+vLy84OrqCjabjby8PJSVleHs2bOM4FO9I/6UFka9w42NjcXSpUtx8+ZN9O3bFyNGjICIiAgyMjIAfNyS5sPnc/CdcjPy/oNHRPj111+hpaWFTp06oby8nBlUmjZtGhQUFJCcnIzBgwczjpmIEBERga5du35UdmxsLPz8/JCWlgagzilLSkoCqEudmz17NhYsWAAigoiICI4fP46VK1d+Ukw9NTUV/v7+ePjw4U/nLE6fPg0HBwf4+vri4MGDOH78OCIiIlBeXo6LFy/CysoKMjIyuHr1KhISEmBra4vjx4/j7du3TPjpw9V2/Pz8sGTJElhZWWHVqlXYtGkTbG1toaioiLt37wL4sVdp59O88J1yM1L/4LHZbAQHByM3NxcVFRVQUVGBsrIy2rdvzzzQ/fr1Y1ZYnjp1KtTV1WFmZgY5ObkG+reVlZUICwvDwoULkZWVhTVr1uDGjRtwcnLCkSNHUFxcDAAwMzNDZWUlAgMDAQB6enpYvnw5s4RSPevWrYOHhwdUVFSwceNGrFq1qjUuzTfBixcvEBcXh/Hjx6O6uhqZmZkQFRUFAGzcuBHHjh3D+PHj4eLigtTUVKxcuRJjxoxBWFgYpKWlISwsjDFjxnwUwhAXF8eFCxdARHjz5g1ERETQtWtXGBoaIi0tDX///XdbnC6f75U2GFz8YeByuQ2+83g8OnToEM2fP5/k5OQoKSmJnJ2dKSIigtLT08nLy4u8vb0pPT2d3NzcaNu2bUREVFlZSZs3byYvLy/i8XhMecbGxmRjY0M9e/akJ0+eEBHR2bNnaejQocTlcmn69Onk4eFB06ZNo7Fjx9KaNWuoT58+TBlcLpesra1p69atFBUVRYWFhbRt2zbicDgUFhZGhoaGtH79+la6Wm3Ltm3bSF1dnXR1dens2bNUVlZG48aNo8jISGKz2URE1L9/f7p48SIR1V2793/f2tpaIiK6efMmde3alQ4cOEAZGRlUUVFBxsbGZGJiQq6urpSWlkZERCwWiwoLC8nLy4tCQ0Nb+Wz5fM/wnfJX8ueff9KePXuY73fv3iU2m02JiYmkrq5OPXr0oJycHPL396fw8HAiIkpMTKRVq1aRnZ0dLV26tEF5JSUlzOecnBxatWoVGRgYUEhICGlqalJiYiIRERUXF5OHhweTavXXX3/Rxo0bqby8nC5cuECrV69uUG5kZCS1b9+e3NzcKCMjg7S1tcnMzIzGjh1L8fHxTJk/MqdPnyYbGxsyNTWl1atXU8eOHSkrK4uOHj1Ko0ePpsDAQLp9+zaZmppSZmYmERHzYqt3xkREWVlZtH//fmrXrh1NmTKFTExMKDk5mTZs2EDW1tbMfomJiTR9+nSqrKz84a8tn+aHP3nkK+DxeAgKCkJ0dDT69++PgwcPokOHDhAQEICRkRGio6NhYWEBGRkZHDt2DB4eHli6dClzfL3GBVA3bbo+o6K4uBjy8vIoKyvDokWLcOXKFVy6dAnBwcEoLy9HUFAQiAj37t2Dp6cnQkNDoa2tjdevX2Pu3LnIycnB5s2b0bdvX1RXV4PD4UBNTQ0mJiYoKytDTEwMli5dipiYGNy/fx8A8OzZMxw9ehRz585lJkp87xARKisrsXz5cuzatQu+vr6QlpbG+vXr8fLlS2zfvh3x8fE4f/48Jk6cCB6PBxEREbi4uHxyUU4WiwUxMTH06NEDCgoK0NbWhoaGBlRVVbFnzx7Ex8fDwsIC5ubmqKioQGxsLObNm4fp06c3sIkfV+bTKNr0lfAdwePxiMPhMN9zc3Np7dq11K9fP7pz5w4REfn4+JCYmBhdvnyZOBwORUdHk5aWFo0fP54qKyuZcojqusfvhyqePn1KQ4YMoYcPHxIRUUREBMnLy9Phw4epqqqK9PX1mXqqqqooNjaWOTYjI4MOHTrElLty5UqytLSkkJAQcnBwICcnJ7Kzs6NVq1ZRWVkZ6ejo0OrVq2nWrFmkr69Pv//+ewteubbDxMSEHj9+TLt37yY9PT2aPHkyERFlZmaSo6MjcblcOnnyJHl6elJCQsJnyxk3bhyFh4fT5cuXSVdXl8LDw8nAwICpIyoqil69ekXXrl2j7du3U0VFRWucHp8fFP5AXyMREBCAkJAQiouLsXbtWqioqMDa2hqvX7/GixcvwOFwcPfuXZiZmTGtXysrK/j6+kJcXBzi4uINWkuCgoIQEBDA06dPUVNTg86dO8PS0pJRerO3t4ewsDBu3bqFDh06wN3dHUuWLAFQJ1zUp08fxjZtbW14eHjg7t27GDNmDERERODv74/4+HgAYFrWBw8exNOnT3HhwgUYGRlBVlYW0dHRX5Su/J44d+4cgoODmdVYBg0ahJKSEvj4+CArKwsyMjKora3FyZMn0alTJwgKCmL8+PGoqKjA9evX8fbtW6as+kkibDYb3bp1g5iYGOzs7KCkpISnT5+isrISjx8/Rs+ePSEpKQllZWXY2Nhg/vz5kJCQ+KRwFB8+jYHvlL8AfRDZ2bdvH/r378+s0N29e3e4u7sjMTER/v7+UFRURNeuXRukoTk4OODJkycoLy9v0H1NSEhAjx49MH/+fNjY2CAnJwcjR45ESUkJo/YmLi6O27dv48yZM1i4cCFOnTr1RXuLi4sRFhYGJycnDBo0CDNmzICVlRUUFRVx+PBh7Nq1CxMnToS2tjZGjRoFf39/yMvLg8vlftepcREREdizZw8yMzNx//59LF++HCwWC2VlZUhISEB2djZERUVRU1ODgQMHIiEhgdGsLioqwqhRo+Dm5gZpaWlUVFQgPT0d1tbWSE9Ph6ioKEpLS3H16lUAwKZNm7Bjxw6oqqpi6tSpSEhI+Ehpjoh+mBXY+bQ+fKf8Cej/JDXfd6JlZWV48OABbt++jd27d0NUVBQSEhIYNmwYkpKSsGXLFsyaNQtJSUnQ1tYGUNfKWr58OfT19ZnUq/LyckRERGD37t1YsmQJIiIiYGpqiqNHj6K2tha2trZYs2YN0tLSUFlZCXNzc/Tq1QsAoKmpCR6P91m7R48eDTs7OyYtTlVVFRwOB3PmzEFKSgrYbDaMjIywbNmyBucqJCT0XcY7q6urkZycjG3btiE3NxcxMTGwtLSEkpISFi9eDC0tLSQlJeGPP/7AhAkTcPDgQQQHByMkJAR6enrg8Xj4448/sGXLFnTq1AmrVq1Cv3798PDhQwwbNgyBgYE4dOgQPD098fLlS1RVVcHKygqOjo7gcrl4+fIlHj58+NHKJd/jteTz7cAf6PsCqampuHDhAhwdHdGrVy/0798fCgoKkJGRQUlJCcrLy3H48GH07dsXIiIisLGxgZOTE2xtbZky6gfv6tm8eTOqq6tRUVEBKysrODk54c2bN5g7dy4mTZqEoUOHYtmyZYiLi8OTJ08QFhaG3r17N9rmpKQkjBo1CseOHUO/fv3g4OAADw8PWFhYQElJCSUlJejRoweOHz+OgQMHNuv1ai14PB5Wr16NuLg4qKmpwdvbGyYmJggODkZQUBBu376N7du3IzAwEIaGhsjIyMCmTZtgY2PDlFEfYqqqqoKrqyt4PB4sLCxgZGSEsLAwaGpqwtbWFvPmzYOEhAQUFBRw+PBhCAgIoKioCJaWlmCxWLh06RJ69OgBYWHhNrwifH4o2i6c/W3xYc6xn58fmZub06FDh8jR0ZF27NhBxcXFFB4eTomJifTmzRuysbEhZ2dnGjp0aIOBNyJqMIiXkpJCz549IyKi8PBw6tGjBy1fvpzOnj3LpML5+PjQypUrmWNZLBYZGxtTfHz8R7b9G56enqSmpkZeXl7066+/UlFRUYPzvHz5MnXu3Jnevn3bpHK/BaKiomjMmDG0ceNGCgsLIyMjIzp58iSx2Wzicrk0YsQIJlUxMjKSVFRUSFlZucEg7YdcvnyZ2rdvT8+fPyciogsXLpCPjw/FxcVRfn4++fj4kJSUVIP0tsWLF1OfPn1o0aJFLXvCfH46+OGL/6Ne+/bOnTsoKipChw4dEB0dDWVlZWRmZqK6uhpycnIYMWIEdHR0EBUVhby8PFy/fh3Hjx9nBt7qwwv1XdjKykocOXIEs2bNQkVFBXr37s3oIkRFRWH37t1ITk5GSkoK03IVEBCAqKgoI3bTVF1eX19f6OrqwszMDMePH4eCggITMxYUFISdnR2GDh2KefPmNcu1a01KSkoQEhICV1dXODg4YNy4cUhOTsaLFy8gKCiIefPmYcOGDaiqqsLw4cOhqKiIYcOGfTHGa2dnh8GDB+PAgQMAgAEDBkBNTQ3nz5+HoKAgdu7cCWdnZzx69Ig5ZvPmzTh8+DDOnj37Xcfj+XyDtO07oe3g8XgNWqDJycm0Zs0amj179mcnWZSUlFBNTQ2NHDmS7O3tSU1NjUJCQhpV3+zZs2nBggW0a9cumjp1KpWWllJMTAzNnDmTbG1t6fDhwx8dU99S/hoOHDhAhoaGzLl+SHl5OWlqalJYWNhXld+WODo6Mi3UnJwcmjJlCgUFBTF60/W9Fn9/fxITE2ugY/05EhMTydDQkNLT04mobnLQnDlzKD09naqqqmjQoEH09OlTZn8ej0c8Ho8MDAzo/v37zX2KfH5ifkqn/L4zrqqqordv35KkpCTNmjWL2T5v3jyysLBgvmdkZNDixYuJxWJRVlYWeXl50aRJkxodWmCxWHThwgUaP348CQgIMM6QxWI12O/DadZf65RZLBYFBAR8lA/9Pnfu3CEVFZUG4Y3vgQ8d6J49e2jGjBlUUFDQYL8//viD1NTUGv0brVixguzs7Iio7h6pzy0/ePAgOTs7U1lZ2UfXcu3atTR79uz/ekp8+DD8lE6Z6POTLOof4PcnWXh7e5O+vj7t3buXiOpaUerq6vTmzZsm1xsXF0djxoyh06dPM3a8///7/Ben3Fjmz59PY8eO/azj/lZZsWIFDR8+nIiIOBwOlZaWfrTPypUracGCBY0us6CggNzc3KikpKTB71GvjfEpnjx5QioqKl+MWfPh0xR+ypjylyZZxMbGAgCkpaWZSRZycnKIjo7GrFmzUFpaCnd3dxw9erRBVkVjMTU1RefOnfHixQsAaDCZpC1Yv3490tLScPr06Tap/2uZNWsW5OTkUFpaCgEBAcjIyDAx+IqKChDRZ1cY+RwqKio4ceIEZGVlG/weIiIinz1GT08PysrK+Ouvv8DhcFBdXf2fzosPn5+ypXzx4kUSEBCg1NRUIiJ68eIFbdq0ibp3706Ojo4ftRrLy8tp9uzZxOFwyNXVtUGYoynUlztixAjavHnzZ/ebNWsWxcfHk7GxMT148IBGjRpFr169+qo6G0N8fDwpKipSXl4ehYeHM0pp3yOpqalkbm5ODx8+pK5du35VD6Cp2S6bNm0iT09POnLkCM2ZM6fJ9fHh8z4/ZUv53yZZHDt2rMH+qampiI6ORmhoKB48eIDNmzd/Vb0CAgIoKytD3759MXfu3M/u161bN6xevRpAXTZIdnZ2i4oF9e7dG7NmzYK7uzvy8vIQERHRYnU1Nx9OplFWVsaTJ0+YVvL69etx4sSJJpXZ2F5LRUUF7O3tMXDgQJw/fx6pqakfze7jw6ep/JROGajrtp8/fx5//fUXhIWFERMTAwUFBcTExGDy5MkN9s3MzISamhpmzZqFgwcP4sSJE6iqqvqqemVkZLBkyZIvdomnTZuGlJQUVFVVISAgAL6+vi06Syw0NBQjR47Emzdv8M8//3xytZJvlQ8dqJycHHg8Hk6dOoVXr17h/PnzDSbzNCeSkpLo06cPpkyZAnV1dcTGxn5y1Rg+fJrCT+uUe/bsCVtbW7i6usLb2xsyMjKwsrJiWqTvt8CePXuGtLQ0mJiYYOLEiYiKimpRbQNRUVEsW7YMz58/BwA4Ojq2WF1AXS710KFD0bVrVwQFBSE9Pb1F62tJBAQE0LFjR5SVlSExMRE3b96EgoJCi9W3Zs0auLq6Ii8vD8nJydDS0mqxuvj8JLR1/KQtefXqFQ0aNIiCgoKYbZ+KQVpZWZGAgABZWFhQTExMq9jGYrFITEyM9u1MoSiCAAANBUlEQVTb1yr1lZSU0IIFC6h9+/YEgEkH+x7R19cnVVXVBgsHtDRLly4lAK1aJ58fk59e++LgwYPYu3cvUlJSPitE7uPjA21tbcyePbtVxWbeF8NvLTIzMzFt2jRERkZCXFy8VetuLpKTk6GqqtqiLeRPcefOHVhbW7dqnXx+PH56p8xms3Hs2DG4u7szy8Xz4cOHT1vxQzhlHo+Hmpqaz/6rra1ttrpERETQvn37z/5rSr5xTU0NSkpKUFpaipKSEkac/UsICQlBVlYWcnJykJWVhZSUVKPrJCKw2ewG14bFYjX4/CVp0KYgJCQEMTGxz16ndu3aQUBAAESEd+/effa3Y7FYzSYYLygo+JFN738XFRVt8ku5pqYGRUVFKCwsRGlp6Revn6ioKBQVFaGoqAh5eXm+5jKfT/LN6w1yuVycP38eDx8+RH5+Pl6+fImXL1+ipKQELBYLLBYL7969g6ioKMTExCAmJsZ8FhUVhaioKOMA/iv1DoTNZoPNZoPFYjH/139u164dY4ecnBxUVFSgoqICERERFBcXo7KyEunp6SgpKQGPx4O0tDSkpaUhJSUFMTGxf7WTw+GgoqICb9++RXl5OaqrqyElJYXOnTtDQ0MDwsLCkJOTY65TYWEhqqqqUFNTg//X3tnGRHH8cfyjh3DcwXEHx/NFUPEQkPDwwtIGW5uSvqg09sHaCCW1qX1BUom1aYTSIBRbaVPTWo3WUJKKFSxNWpOm0jSkJrUKkhgKkVoIcCAELLKAwAEHe/B/YW7Ds6KHLn/3k2yO7O7N/GZ+zG/mZme/Y7PZcHFxmVZHU+vJ1dXVaYHCbrdjs9kYHBykt7cXu93OihUrmJiYQBRFRFFkYmJCOr9q1SpcXV0luzw8PKRA6UybxsbGpvlvqg9FUcTNzQ13d3e0Wi1+fn4EBgYSFBREcHAw27dvp7GxkXPnznHlyhXa29sRRVHqIL28vBa01WazSR3wwMAAer2eiIgInnzySdLT01mzZo1TyqmwvJH9SLmgoIBTp07x3HPPYTQaMRqN+Pj4oNfrpYDi6uoqi2mHyclJqdE7dr4QBIG2tja++eYbXn/9daKjo1m7di3e3t73NTKbiSNI19bWkpuby7Zt2zCZTFI9+fj4oNVqnR5074Xx8XF27txJdHQ0ZrN5mv88PDykzkAuWsSOjmRsbAyr1YogCAiCQE9PD11dXfz00094enqya9cuoqKiMJlMaLXa+/KhKIr09/fT1NREZWUllZWV1NfXo1arl6BkCssJebSGBfjuu+/Izs4mMjLyUZtyVxySm25ubuh0Oml5XXd3tzQacjYuLi4YDAa6urpISkqSlRxnfX09bm5u5OTkyKLTvBsqlQqNRoNGo0Gv18/aUeTixYukpaU5ZYmii4uL1EklJCRw7do1Kisrl+3GAwrOQ9brlEVRpK2tbdmv/WxtbcVsNi9pHhaLhfXr1y9pHovFYrFgNpuXRUC+F0ZHR5fMj+vWreP69etLkrbC8kLWQbm5uRl/f39pf7sH5eTJk5w+fdopaS0Gi8Uybb6ws7OTHTt2OC39F198kaamJqfNSTqrniwWC6GhoQ9uEI/Odw7sdjuCIBASEnJf36+pqWHHjh2kpKRgsVikjVgdhISEUF9f7wxTFZY5sg7KjY2NrF69+lGb8cDcuHHjvhvzTERRnPN8R0eH0/JwFu3t7bKz6X7577//0Ov1uLu739f3y8vLeeONNygpKUEQhFlBOTQ0dFm/SangPGQ9p2yz2aY9+Ojs7CQjI4PY2Fjq6urw9fXl8OHDqNVqGhoaOHToEKOjo5hMJnJyctDpdPOm3dHRwWeffUZfXx9qtZqPPvqI0NBQcnNz0Wq1XL9+HUEQ2LNnD0lJSfT09JCVlYXVakUURbKysoiLi6OqqoqTJ08yNjaGyWTiwIEDaDQajh49yp9//olKpWJgYGDWA5yJiQkOHjw4rRzl5eX8/PPPjI+PYzKZyM/PR61Wk5ubi06no6GhgQ0bNvDWW2+RnZ1NX18fUVFR0qoQRx5yqSdBECTpTLnYtFjfJSQksHfvXsbGxmb5cGRkhMzMTLq7u7Hb7ezevRu9Xs9XX32F3W4nMjKSrKwszp8/T0VFBVVVVVRXV9PR0YHFYiElJYWtW7eSmpqKWq1mdHR0/sag8Ngg65HyXLS3t/Paa69RVlaGp6cnf/zxB3BHg2DPnj2cPXuWsLAwCgsLF0znk08+4YMPPuD7779n7969FBQUSNd6enr49ttv+fLLLzl27BgAv/32GwkJCZSUlFBaWorZbKa/v5+ioiKOHz/OmTNniIiI4MyZM9y+fZsLFy5QVlbG2bNn55x+masczz77LMXFxZSWlrJmzRrOnTsn3X/jxg2OHz/Oe++9R2FhIbGxsZSUlPDMM89w8+ZNWdbTzGcBcrBpsb57++2357Xj8uXL+Pr6UlpaSllZGU899RR5eXkcOnSIH374QVrO+dJLL/H000+TkZHBwYMHeffdd4mLi6OkpITU1NQFy6rw+CHrkfJcBAUFER4eDsCGDRvo7OxkaGhI2pQUIDk5mf3798+bxvDwMHV1dWRmZkrnpr5gsmXLFlauXMnatWvp7e0FIDIyko8//hhRFNmyZQvh4eFcvHiRlpYWqeGOj48THR0tLUHLz88nMTFxzgddc5WjubmZEydOMDg4yMjICAkJCdL9SUlJ0nK2mpoaPv/8cwASExPR6XSzNu+UQz3ZbDbZ2bRY323evHleW8LCwjhy5Ahff/01mzdvRqvVEhQUJE3ZJCcn8+OPP5KSkjJvGgoKM5F9UJ4ZbFatWiX9rVKpZjX8e2FiYgIPDw9KSkrmvD41D0f+8fHxFBYW8tdff5GTk0NaWho6nY4nnniCTz/9dFYap06dorq6mt9//x2r1XpP5cjLy+OLL77AbDbzyy+/cPXqVememT+d5wr0U/OQQz11dHTIzqbF+q6srEza5XqmD0NCQjh9+jSXLl3i2LFj0zrRxSLz1wUUHiKynr4wGo3SaGchPDw80Ol00hbwv/76K/Hx8QveHxwcTEVFBXCnQTQ2Ni6YR1dXFwaDgZdffplt27bR0NBAdHQ0tbW1tLe3A3eWTLW1tTE8PMzQ0BCJiYm8//77APdUDqvVitFoRBRFysvL570vLi5Oun7p0iUGBgbw8vK6ax4Pu54CAgIQBEFWNi3Wd4609Xo9giBMC563bt1CrVbzwgsvkJaWRl1dHZ2dnVKa58+fn7MsWq121rZRgiDg6+u7YDkUHg9kPVKOiIigpaVlXvW2qeTm5koPi4KDgzlw4MCC9+fn51NQUEBRURGiKPL8888vuAb16tWrFBcX4+LigkajIS8vD4PBQG5uLtnZ2dJP6PT0dLRaLfv27WNsbIzJyUnCwsKwWCxs3LhxQZvS09PZtWsXAQEBhIWFzbvf2zvvvEN2djapqanEx8cTEBDA6tWrsVgsdxVZf5j1NDAwgMViWTD9h23TYn23b98+4E5QVqlU9PT0SMGzqamJI0eOsHLlSlxcXMjMzGRoaIj9+/dLD/peffXVWfasX78elUrFzp07SU5OJjU1ldbWVqKiou5aVwr//8j6NevJyUm8vb0pKyvD29v7UZtz3xQVFWG1WsnIyFiyPI4ePYq7uzu7d+9esjwWS0VFBeXl5Rw+fPhRm+IUXnnlFTIzM9m0aZPT0/7www958803lflnBXlPX6xYsYKYmBguX778qE15IMLDw7ly5YrT1M7my6OqqmpJ81gsZrOZa9euMTg4+KhNeWDsdjvj4+NL8r84PDxMbW0tsbGxTk9bYfkh65EyQHV1NVu3bsXV1RVfX1+MRiPe3t7o9XpJZ2LqMVX1bKr6mbNU4qaqjM1Ui5t59Pf309vby61bt2hra2NycpKYmBjWrVsnqYp5enpKn+7u7vekEjcwMDDtuH37Nh0dHVRWVmK1WjGZTPj7++Pj44PBYECj0dxzXTlLsMix+qK4uJgLFy5IQkRGoxE/Pz90Ot2c9jiU4qba5yzBIofg0L34bnh4mL6+vmmCRLGxsTQ3N+Pl5UVUVBSBgYEYDAYMBgN6vV6a4piP0dFR+vr6pKO3t5eWlhb+/vtvtm/fzokTJ5xSToXljeyDMtxZ8jRVttMhSTk6Osrw8DAjIyPS51x6vPfzlH8+HMFiLo1gjUYjfarVakn6MTAwkICAAEZGRvj333/5559/6OnpQRCEaXrK880hT8UhQOTQVPbx8cHb25vQ0FBiYmLw9/env79fqqebN28yODg4bz09DD1lh3SqQ7rTMZp3nFu5ciUqlUrSV3ZIbC61nvJMP071n6enJwEBAZL/goKC8PPzw2azUVNTQ3V1Na2trXR3d0t6yg451vlQq9WSnrKfnx9+fn5s3LiRTZs2LXt9FwXnsSyCsoKCgsLjgqznlBUUFBQeN5SgrKCgoCAjlKCsoKCgICP+B1/0oOBYwjWSAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制决策树\n",
    "treePlotter.createPlot(lensesTree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
